关于那个很强的公司的笔试题的 问题

xmu_才盛 2008-02-18 07:53:01
如上,找了半天也没找到原帖,不知道是否被管理员删贴了。那里的很多回帖都很值得学习啊,有一些还没有看懂。所以再拿过来请教

#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5};

int *ptr2=(int *)((int )a+1);
printf("%x",ptr2);
}

至于为什么出现2000000这个结果,我还是没搞懂。希望那天回帖的大侠们再费费神把原因分析一遍.

我想到了 a是int* 类型的首地址,将它转换成int类型后 加1是在本字节上产生位移对吧?然后再把这个数值转换成为int*传给ptr2,打印时就会打印这个半截的地址数值是吗?

但是还是搞不懂啊?
追踪看到 a的地址为0x0012ff6c,强制转换后(int)a 的值为1245036(10进制),加上1后为1245037.那么打印时怎么就出现2000000(h)了呢?它们不相等啊?

...全文
189 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baihacker 2008-02-19
  • 打赏
  • 举报
回复
来混,如果向分看齐就没有意义了.
能够给别人帮助
能够学到东西
能够认识朋友
这才是最重要的
所以即使是零分贴,只要我懂的,就尽力去回答
当然,有时也灌水...
xmu_才盛 2008-02-19
  • 打赏
  • 举报
回复
谢谢了,学习你的精神
lori227 2008-02-19
  • 打赏
  • 举报
回复
学习了~~~
独孤过儿 2008-02-19
  • 打赏
  • 举报
回复
楼主是不是要这个,嘿嘿:
http://topic.csdn.net/u/20071127/17/d521c586-bc0a-4c31-bcfe-5d90f0ed7c5e.html
xmu_才盛 2008-02-18
  • 打赏
  • 举报
回复
貌似明天才可以给分
xmu_才盛 2008-02-18
  • 打赏
  • 举报
回复
我知道平时不会用到这样的东西的。貌似只有搞嵌入式的才会用到。
其实我只是喜欢研究底层的东西,喜欢刨根问底,只是为了更加深入的了解计算机。

还有我并不是要当孔乙己。很谢谢5楼兄弟的提醒.
arong1234 2008-02-18
  • 打赏
  • 举报
回复
研究这种东东永远是舍本逐末,如果你能避免写出这样得代码,你更有前途
xmu_才盛 2008-02-18
  • 打赏
  • 举报
回复
不是bit 是字节byte,晕死了……
xmu_才盛 2008-02-18
  • 打赏
  • 举报
回复
多谢了,*ptr2还是4个bit,所以要到2的字节起点。

晕死了,我居然把内存标号拿出来比较。忘了那只是某段内存的代号,并不是内存中的内容。

非常之感谢。
ysuliu 2008-02-18
  • 打赏
  • 举报
回复
学习了,高手啊
baihacker 2008-02-18
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5};

int *ptr2=(int *)((int )a+1);
printf("%x",ptr2); //改成*ptr2
}
高 高 -> 低
0000 0000
0000 0000
0000 0000
0000 0101 (5
0000 0000
0000 0000
0000 0000
0000 0100 (4
0000 0000
0000 0000
0000 0000
0000 0011 (3
0000 0000
0000 0000
0000 0000
0000 0010 (2
0000 0000
0000 0000
0000 0000 (ptr2指向这里)
0000 0001 (1 (a在这里


printf("%x",*ptr2);
把ptr指向的内存的四个数取出来

0000 0010 (2
0000 0000
0000 0000
0000 0000 (ptr2指向这里)
转为十六进制
0x02
0x00
0x00
0x00
输出.......

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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