const常量通过指针修改值 指针2种赋值的区别
const int x = 1;
int z = 2;
const int* p1 = &x;
int* p3 = &z;
//p3 = p1; // 用这个x值为5
p3 = (int*)&a;// 用这个 x值仍然为1
*p3 = 5;
printf("x = %d\n", x);
printf("p3 = %d\n", *p3);
请问上面2个区别
[解决办法]
楼主问题没说清楚:
按照上面的定义,p3 = p1这个是不可行的,编译会出错:无法从“const int *”转换为“int *”。
p3 = (int*)&a这里的a为何物?
[解决办法]
编译器会对const变量进行神奇的优化,外部通过指针的方式间接修改可能无效果
具体参见汇编