很疑惑的一段代码,求答疑,高手来看看
#include<stdio.h>
int main()
{
const int a=3;
int *p=(int *)&a;
*p=6;
printf("%d\t%d\n", *p , p );
printf("%d\t%d\n", a , &a );
return 0;
}
运行结果:
6 1245052
3 1245052
Press any key to continue
谁能帮我解释下这个运行结果怎么会在同一个地址下,值却不同。
[解决办法]
另外,不同的编译器答案不同。
在VC6.0下应该都是
6
6
地址相同。
所以我说编译器优化结果。
[解决办法]
http://wenku.baidu.com/view/d6590521af45b307e8719737.html
楼主要学会自己查资料啊~