int main()
{
int const n = 2;
int* p = (int*)&n;
*p = 3;
printf("%d/n", n);
printf("%d/n", *(int*)&n);
return 0;
}
输出结果为:
2
3
这是为什么呢?
原来是编译器在处理const类的常量时。。。直接在编译过程就进行了符号替换
即把上例中的常量n全部替换为2
而p与&n无必然关系,因是强制转换,实际上*p与&n相捆绑,p与n无关,*p的变化仅仅是n的存储位置调整,与n内容无关