首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

const恒量通过指针修改值 指针2种赋值的区别

2013-03-27 
const常量通过指针修改值 指针2种赋值的区别const int x 1int z 2const int* p1 &xint* p3 &z

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变量进行神奇的优化,外部通过指针的方式间接修改可能无效果
具体参见汇编

热点排行
Bad Request.