#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { const int l_con_val = 2; printf("addr of l_con_val=%p\n",&l_con_val); printf("l_con_val=%d\n",l_con_val); int *p = NULL; p = (int*)&l_con_val; *p = 4; printf("addr of l_con_val=%p\n",&l_con_val); printf("l_con_val=%d\n",l_con_val); printf("addr of p=%p\n",p); printf("*p=%d\n",*p); printf("*(&l_con_val)=%d\n",*(&l_con_val)); return 0; }
对于上面的代码, 使用visual studio 2012编译的结果是 addr of l_con_val=0028FA58 l_con_val=2 addr of l_con_val=0028FA58 l_con_val=2 addr of p=0028FA58 *p=4 *(&l_con_val)=2 使用dev c++ 64位编译结果是 addr of l_con_val=000000000022FD74 l_con_val=2 addr of l_con_val=000000000022FD74 l_con_val=2 addr of p=000000000022FD74 *p=4 *(&l_con_val)=2 使用g++编译的结果是 addr of l_con_val=0xbff60868 l_con_val=2 addr of l_con_val=0xbff60868 l_con_val=2 addr of p=0xbff60868 *p=4 *(&l_con_val)=2 使用gcc编译的结果是 addr of l_con_val=0xbfb1b468 l_con_val=2 addr of l_con_val=0xbfb1b468 l_con_val=4 addr of p=0xbfb1b468 *p=4 *(&l_con_val)=4 出现这个的原因是什么呢? 编译器 C C++ const 局部变量 [解决办法]