const常量是不是符号常量,它的名称是什么?

motiandalou 2011-07-14 10:15:09
用const定义的常量应该怎么称呼,叫const常量还是符号常量?最标准的命名是什么?
const常量保存在常量区还是符号表中,或者堆栈中?
const常量是不是仅仅将变量修改为只读的,假如是这样的话,那么变量的储存方式应该不会改变吧,比如说在栈中的还是在栈中,在堆中的还是在堆中?
常量折叠指的是const常量还是宏常量?假如是const常量,那么为什么还能取到const常量的地址?我可不可以这么理解,const常量保存到符号表文件中,计算出常量表达式的值后,然后用该值替换所有出现const常量名的地方?如:
const int x=3+2; //计算出3+2,为5


int y=x+5; //用5替换x,这就是常量折叠?假如获取x的地址,是不是就是5的地址?

好了,就是这些问题了,请耐心看完,不建议没看玩就发表议论,谢谢。

...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2011-07-14
  • 打赏
  • 举报
回复
所谓的const常量是一个伪常量,从它修饰的对象存放的位置就可以得出来,它修饰的对象既可以存放在全局变量区,也可以是堆,当然还可以是栈。它所谓的常量属性只是通过编译器来实现的,不代表它会存放在不可改写的内存区域。至于常量折叠,只不过是编译器的优化手段。你可以用volatile来阻止这样的优化。
luciferisnotsatan 2011-07-14
  • 打赏
  • 举报
回复
常量折叠
const int x = 5;
int *p = &x;
*p = 10;
printf("%d",x);

输出5,而不是10。
luciferisnotsatan 2011-07-14
  • 打赏
  • 举报
回复
const不就是常量么?
没const的那叫

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧