64,654
社区成员
发帖
与我相关
我的任务
分享
int main()
{
const int i = 100;
int *ip = const_cast<int *>(&i); //取得i的地址
*ip=200; //修改i的值
printf("%d",i); //i不变
return 0;
}
int main()
{
const int i = 100;
int *ip = const_cast<int *>(&i); //取得i的地址
*ip=200; //修改i的值
printf("%d",i); //i不变
return 0;
}
ongoing编译器通常会做优化,比如你定义的常量值 const int i = 100,那么在以后任何地方用到i的时候,都会用100对i进行简单的替换,*ip = 200;你对i所在的内存的值,使内存里面的值为200,在你printf的时候,由于看见的是i,所以编译器仍然会用100做简单的替换,而不是从你的内存里面取值