您的位置:首页 > 编程语言 > C语言/C++

const 全局变量

2016-08-17 17:20 246 查看
1、const 全局变量在只读存储区,调用const_cast修改const全局变量的常量性并修改其值对出现写入错误;而对于局部变量则没有事,修改常量性后可以实现修改。

但是,由于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++