关于指针常量(编译器优化)

牛客题目:

点击查看代码

const int a =10;
int *p=(int*)(&a);
*p=20;
cout<<"a="<<a<<",*p="<<*p<<endl; < code></"a="<<a<<",*p="<<*p<<endl;>

输出:a=10,p=20;
原因:
a = 10,
p = 20 因为使用const 编译器会优化,对于以后见到a ,编译器立马用10替代.

而p是新定义的一个指针变量,开始p通过 int p = (int )(&a)获得了栈区常量a的地址.

即p指向这个地址,但是因为const 导致编译器优化,直接在符号表中 用10代替a了,所以导致
打印a还是10,而打印那个内存单元的地址就变成了20

我是一个还没有想好写点啥的小尾巴

Original: https://www.cnblogs.com/TomoyaAT/p/15983883.html
Author: TomoyaAT
Title: 关于指针常量(编译器优化)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/584119/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球