空指针自加的问题

sunny05021171 2011-10-16 09:40:05
int *p;
int *a=NULL;
p=a;
p++;
cout<<setw(1)<<setbase(10)<<p<<endl;

在VC++6.0中,运行输出:0000 0004;
请问为什么设置不起作用?
整型指针自加一次,跳过四个字节,p初值为NULL,就意味着它指向地址为0的空间吗?
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-10-17
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
wendellup 2011-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 loaden 的回复:]

p初值为NULL,就意味着它指向地址为0的空间吗?
====
给啥指向啥。
[/Quote]

那个0不是地址空间么?

如果是给*p直接赋值还是会出错的。。p还是没初始化哎。
快乐的小菜鸟 2011-10-16
  • 打赏
  • 举报
回复
初始化 null 就是 0000 0000 自加
老邓 2011-10-16
  • 打赏
  • 举报
回复
p初值为NULL,就意味着它指向地址为0的空间吗?
====
给啥指向啥。
turing-complete 2011-10-16
  • 打赏
  • 举报
回复
理论上确实是 指向 0 的。

64,646

社区成员

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

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