const 全局变量
2016-08-17 17:20
246 查看
1、const 全局变量在只读存储区,调用const_cast修改const全局变量的常量性并修改其值对出现写入错误;而对于局部变量则没有事,修改常量性后可以实现修改。
但是,由于const变量是在编译时确定的,在运行时并没有从内存中读取const变量的值,而是直接从寄存器读取的,因此即使用const_cast去除了const变量的常量性,并修改了变量的值,输出仍为原始值
此时,q的值已经是40,但是代码输出值为10,即a=10。
可以通过对const变量加volatile,使每次使用q时都从内存中读取其值,从而得到正确结果
但是,由于const变量是在编译时确定的,在运行时并没有从内存中读取const变量的值,而是直接从寄存器读取的,因此即使用const_cast去除了const变量的常量性,并修改了变量的值,输出仍为原始值
void main(void) { const int q=10; const int *p = &q; int *m = const_cast<int*>(p); *m = 40; int a = q; cout<<a; }
此时,q的值已经是40,但是代码输出值为10,即a=10。
可以通过对const变量加volatile,使每次使用q时都从内存中读取其值,从而得到正确结果
相关文章推荐
- c++中static 全局变量,const全局变量的作用域
- IOS 基础-define、const、extern、全局变量
- [转载]全局变量、extern/static/const区别与联系 2011-11-28 10:08
- const全局变量和局部变量
- const,static,全局变量细节及其区别
- const声明和全局变量
- 内存分配方式(动态/静态)的不同对const变量(全局/局部)访问性的影响
- [转]全局变量、extern/static/const区别与联系
- const 全局变量应注意的问题
- 4000 黑马程序员—C学习笔记—static和const修饰的全局与局部变量
- 全局变量、extern/static/const区别与联系
- C语言中const分析(未知大小的全局变量数组声明出错)
- 全局变量、extern/static/const区别与联系
- 头文件中定义 const 全局变量应注意的问题
- C++ 静态变量 全局变量 const
- 使用const_cast转换全局const变量导致程序崩溃的原因
- 全局变量、extern/static/const区别与联系(转载)
- C++笔记:全局变量、extern/static/const区别与联系
- 内存分配方式(动态/静态)的不同对const变量(全局/局部)访问性的影响
- const定义的全局变量不能被其他文件访问,必须加extern 才能被访问吗?