优艾设计网

c const 关键字疑问?

优艾设计网 https://www.uibq.com 2023-01-11 07:25 出处:网络 作者:PS入门教程
const int a = 3; int* p = (int *)&a;*p = 4;printf(\"a-------%d------\", a); printf(\"*p-------%d------\", *p); printf(\"&a-------%d------\", (int)&a); printf(\"p-------%d------\", (int)p);

const int a = 3; int* p = (int *)&a;*p = 4;printf("a-------%d------", a); printf("*p-------%d------", *p); printf("&a-------%d------", (int)&a); printf("p-------%d------", (int)p);

输出:

a-------3------ *p-------4------ &a------优艾设计网_设计百科-1606416268------ p-------1606416268------

问题是 const 修饰a变量后,a 不能修改,但是可以隐式修改a 的值,就是用指针。 我用指针修改了值,为什么输出的时候 a 没有改变。*p 的值改变了。


虫虫助手盐 优艾设计网_设计 14小时前

a应该是被你的编译器优化成一个常数量3了。


往常的时光2018 14小时前

优艾设计网_电脑技术

我用gcc 5.4.0用默认参数编译,结果就是a=4的输出。


逆曾文 14小时前

优艾设计网_设计

gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)下 a = 4


asd137880673 14小时前

优艾设计网_电脑技术

因为这本身就是ub,你这么做究竟能导致什么结果,编译器是不会给你保证的。


普乐蛙 优艾设计网_电脑技术 13小时前

看到过这个问题,给个链接:http://www.zhihu.com/question...


一片寂静离弦的歌离弦的歌离弦的 13小时前

优艾设计网_设计客

我在ubuntu gcc 4.8.4下,输出的a = 4


0

精彩评论

暂无评论...
验证码 换一张
取 消