黑马程序员技术交流社区

标题: 关于const的问题 [打印本页]

作者: Abuzzworld    时间: 2015-10-4 23:10
标题: 关于const的问题
  1. const int a = 5;
  2.         int *p;
  3.         p = (int *)(&a);
  4.         *p = 3;
  5.         printf("a %p, = %d\n",&a,a);
  6.         printf("p %p, = %d\n",p,*p);
复制代码
  1. a 0x7fff5fbff7cc, = 5
  2. p 0x7fff5fbff7cc, = 3
  3. Program ended with exit code: 0
复制代码

请问到底该怎么理解 我把a地址里的内容修改了,但是a的内容并没有改变呢

作者: Abuzzworld    时间: 2015-10-4 23:12
内存的地址不是唯一的吗?编号:0x7fff5fbff7cc 的内存只有一块吧,该怎么解释我用其他方式获得这个地址并修改这个地址所存储的内容,结果就没有变化呢。
作者: A侠    时间: 2015-10-5 00:36
????????????????????
作者: HI奋斗    时间: 2015-10-5 07:45
等高手回答,不过感觉,      p = (int *)(&a);好像有问题, 先取地址,已经变为地址了,干嘛还要强转化
作者: 洪吉童    时间: 2015-10-5 17:07
要是把const定义在全局变量区,就执行不了了,但是不知道为什么在局部变量区可以
作者: 超の    时间: 2015-10-5 18:06
这是已知的bug,底层做了优化,
作者: 杰杰    时间: 2015-10-5 19:55
这个BUG视频里说过,  知道就行了。
作者: 浩润2015    时间: 2015-10-5 21:44
const int a=5;表示不管后面对a怎么操作,其地址和存储的值都不会改变,而p=(int *)(&a);是把a的地址给p,后面改变的是p所指向地址值的变化为3,听懂了吗??
作者: 大宝820    时间: 2015-10-5 23:18
等大神评论




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2