【发布时间】:2012-10-17 03:33:54
【问题描述】:
这一定是个愚蠢的问题,但我无法理解为什么会发生这种情况
int main()
{
int i=20;
int *p=&i;
cout<<"old p="<<p<<endl;
*(++p) = 10;
cout<<"p="<<p<<endl;
}
在这段代码中,我得到的输出为: 旧 p=0x22ff08 p=oxa
为什么指针的值变为 10(0xa) 而不是递增较早的地址并将 10 分配给该位置?
【问题讨论】:
-
那是未定义的行为。
-
“增加较早的地址并将 10 分配给该位置”是什么意思?你期待什么结果?
-
我的想法是,指针变量可能指向新位置 0x22ff0C 并尝试在那里输入值。但现在我明白了。感谢 R.Martinho。谢谢你们。
标签: c++ pointers dereference pre-increment