int a = 5;
int b = 11;
int* p =&a;
/*printf("&b=%p\n",&b);*/
printf("*p=%d\n",*(p));
printf("*(--p)=%d\n",*(--p));
这玩意儿真的很神奇。。。不知道发生了什么。。。
把上面的注释打开,第二个print的结果不一致。。。
在Win10下的codeblocks(32位mingw编译器)下,我的结果是:
当注释符存在的时候,输出为:
*p=5
*(--p)=4200672
当注释符打开的时候,输出为:
&b=0060FEF4
*p=5
*(--p)=11
明明就只是多一个printf,为什么*(--p)的结果就不同呢??。。。
*(--p)
在这里对指针的移动没有意义,因为我们无法不知道--p
指向谁,你之前的测试只是恰好指向了b
的内容,但我在Ubuntu18.04下测试的则不是b
的值,只是内存中的一个数字而已,如下图: