关于指针的问题,求高手帮下忙?

ly252958710 2009-06-19 09:48:39
void main()
{
int d = 16;
int a=4, b=9;
int *p=&a;

cout << *(p++) << endl;//4
cout << *p << endl;//16

}
为什么cout << *(p++) << endl;的值还是4,我已经加了()为什么还是先执行*p再进行指针的++,还有int变量在内存当中是先从高位分配到低位的?
...全文
33 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyyapple 2009-06-19
  • 打赏
  • 举报
回复
cout < < *p < < endl;//4
p++;
cout < < *p < < endl;//16
  • 打赏
  • 举报
回复
cout < < *(++p) < < endl;
andylovecandy 2009-06-19
  • 打赏
  • 举报
回复
假使变量P的栈位置是s,当前栈顶指针指向t(栈顶指针指向出栈的位置)。执行到P++的指令时,先把P进栈(栈顶的值是P,
位置是t+1),再P+1赋给P,而*操作取值是到栈顶去取的,当然取得的值是P了。
sailing0123 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
p++这个表达式返回的是增加前的值
[/Quote]

实践出真知!
moye111 2009-06-19
  • 打赏
  • 举报
回复
好好看书吧,先看C语言,在看C++!
Walf_ghoul 2009-06-19
  • 打赏
  • 举报
回复
++p输出的是16,--p输出的是9,高位到地位?等待
Walf_ghoul 2009-06-19
  • 打赏
  • 举报
回复
p++是指执行玩语句后在++,而++p就是给p++所以结果才是4
光宇广贞 2009-06-19
  • 打赏
  • 举报
回复
应该把后加改为前加。
pathuang68 2009-06-19
  • 打赏
  • 举报
回复


cout << *(p++) << endl;//4

改成

cout << *(++p) << endl;//4

试试
「已注销」 2009-06-19
  • 打赏
  • 举报
回复
p++因为;++在后面,所以要等到这条语句执行完了(遇到分号),才++
pengzhixi 2009-06-19
  • 打赏
  • 举报
回复
p++这个表达式返回的是增加前的值

65,210

社区成员

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

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