有点疑问,请教大家。小女子谢谢
1、int main()
{
const int a=0;
int *p=(int*)&a;
*p=3;
printf("a=%d,*p=%d\n",a,*p);
return 0;
}
输出结果:a=0,*p=3
2、
int main()
{
int a=0;
const int *p=&a;
a=3;
printf("a=%d,*p=%d\n",a,*p);
return 0;
}
输出结果:a=3,*p=3
1)为什么前面的a不是等于3,我认为a所在的内存地址里的值已经改为3了,按道理a对应的值也应该 是3.或许你们会认为因为a是const变量,那好看下面
2)按照第一题的输出结果,那为什么第二题*p的值又改变为3了呢??它指向的值不也是const的。
请教高手解释下,这个两个结果我认为有矛盾之处。