一道基础题

scrutin 2008-10-24 01:12:17
小端系统里面
char array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;

*(cp+2)是多少?

*(ip+2)是多少?
...全文
196 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
idea_yuye 2008-10-28
  • 打赏
  • 举报
回复
输出一些乱七八糟的东西啊!
lunarfan 2008-10-24
  • 打赏
  • 举报
回复

0b0a0908
leiminlovesoft 2008-10-24
  • 打赏
  • 举报
回复
char array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;

printf("%d\n",*(cp+2));

//下面三句比较一下就可以了。
printf("%p\n",array);
printf("%p\n",ip + 1);
printf("%p\n",ip + 2);





-----------------------------
输出:
2 //cp指向的是array 因此 cp + 2 指向2再把2输出
0012FF70
0012FF74
0012FF78

后三个相差为4 因为是整形指针。偏移量为4

*(ip + 2)是一个随机的内容 ,因为int *ip = (int *)array;只是将ip赋一个指向array的整形指针,但是p并未指向array的一个指针,因为是强制转换并不是赋值





l51 2008-10-24
  • 打赏
  • 举报
回复
int 类型占用几位要看操作系统是几位的,并且还要看 C++ 的编译器是几位的,
不是想当然的32位, 如果放到64位机上,结果又不同的。
如果编译器进行强类型检查的话,
(int *)array;
应该不能通过。
anybbs 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 anybbs 的回复:]
*(cp+2) 2
*(ip+2) 993671480
[/Quote]

char array[16] = {'0',...} ???????
Dan_M 2008-10-24
  • 打赏
  • 举报
回复
*(cp+2); 2

*(ip+2); 0x0b0a0908
ren03 2008-10-24
  • 打赏
  • 举报
回复
第一个输出2吧,因为cp是char型指针,所以cp加2相当于加了2*sizeof(char)个字节,cp指向的是2;
第二个输出0x0b0a0908(十六进制),ip是int型指针,加2相当于加了2*sizeof(int)个字节,
此时指向的是{8,9,10,11},这四个数值是8在低字节,11( 十六进制是0b)在高字节所以输出的是0b0a0908(十六进制)
anybbs 2008-10-24
  • 打赏
  • 举报
回复
*(cp+2) 2
*(ip+2) 993671480
xhs_lh04 2008-10-24
  • 打赏
  • 举报
回复
*(cp+2)=2
*(ip+2) = 0xB0A0908
+2,偏移8,字符是8,9,10,11所以数应该是0xB0A0908
刚才看错
tsaiyc 2008-10-24
  • 打赏
  • 举报
回复
正解[Quote=引用 3 楼 lbh2001 的回复:]
上面按错键了
引用楼主 scrutin 的帖子:
小端系统里面

C/C++ codechar array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;

*(cp+2)是多少?

*(ip+2)是多少?

*(cp+2)为 2
*(ip+2)为 0x0B0A0908
[/Quote]
mifeixq 2008-10-24
  • 打赏
  • 举报
回复
呵呵,这个题目还比较有意思……

*(cp+2) 不用怀疑,一定是2了……

那么看看*(ip+2)应该是多少呢?
首先 (int *)array 把 array强行转换成int *类型 (4 Bytes)那么也就是说,ip+1 == array+4 ip+2== array + 8

那么*(ip+2)应该是从array+8到array+11的内容 0b0a0908 验证一下

mifei@P-I-mi:~/C$ cc test.c
mifei@P-I-mi:~/C$ ./a.out
b0a0908,8,0xbfe86b84,0xbfe86b84
mifei@P-I-mi:~/C$ cat test.c
#include <stdio.h>

int main(){
char array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;
printf("%x,%x,%p,%p\n", *(ip+2),*(cp+8),ip+2,cp+8);

return 0;
}
mifei@P-I-mi:~/C$


果然如此……
xhs_lh04 2008-10-24
  • 打赏
  • 举报
回复
*(cp+2)=2
*(ip+2)未知
lbh2001 2008-10-24
  • 打赏
  • 举报
回复
上面按错键了
[Quote=引用楼主 scrutin 的帖子:]
小端系统里面

C/C++ codechar array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;

*(cp+2)是多少?

*(ip+2)是多少?
[/Quote]
*(cp+2)为 2
*(ip+2)为 0x0B0A0908
lbh2001 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 scrutin 的帖子:]
小端系统里面

C/C++ codechar array[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char *cp = array;
int *ip = (int *)array;

*(cp+2)是多少?

*(ip+2)是多少?
[/Quote]

*(cp+2)为 3
*(ip+2)为 0x0B0A0908
idea_yuye 2008-10-24
  • 打赏
  • 举报
回复
*(cp+2)=2;
*(ip+2)=50;
企业公司软件测试面试笔试集合 软件测试面试 (测试基础).doc 01_企业面试试卷(综合).doc 01_企业面试试卷(综合)_参考答案.doc 04_企业面试试卷(测试基础).doc 04_企业面试试卷(测试基础)_参考答案.doc 500强公司面试的经典正确与错误回答对比!!! 看看你的弱点.doc C面试.txt Java初学者都必须知道的六大问.doc 百度笔试.txt 北京博彦科技笔试+面试.doc 北京大学计算机科学技术研究所.doc 波尔世通的笔试+面试.doc 测试人员面试.doc 测试.doc 常见的测试(转贴).doc 传视数码公司的面试.doc 汉端笔试(7页).doc 合力金桥的笔试.doc 华为面试.doc 经典逻辑.ppt 联合网视面试.doc 美国英网软件公司目.doc 面试考(腾讯,招行等等).txt 某公司的面试试.doc 奇虎面试.doc 千像互动的笔试.doc 清华同方开发的面试 (有兴趣的看一下了 !).doc 缺陷的等级划分,一个经常被问到的问.doc 软件测试工程师笔试试(大集合).doc 软件测试工程师测试试大集合(二)包括答案.doc 软件测试工程师试发布版.doc 软件测试试.doc 软件评测复习知识点(小颖).doc 软通动力面试笔答.doc 瑞星笔试(15道).doc 神州泰岳测试试(笔试)转贴.doc 时力科技面试.doc 瓦瑟笔试(限男性).doc 喜安科 面试.doc 性能计算公式.txt 亚控科技比试.doc 一道测试notepad笔试.doc 一道数据库的笔试目.doc 一个外包测试公司的笔试!.doc 一家通讯公司的面试目.doc 英文自我介绍大全.doc 英语面试.doc 英语面试.doc 有意思的逻辑.doc 中软的面试(转贴).doc

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧