指针修改const
来源:互联网 发布:博物馆文艺软件 编辑:程序博客网 时间:2024/06/05 07:01
大家都知道如下代码中,被const限定的a是不可以被直接修改的
1
2
3
4
5
void
main()
{
const
int
a = 3;
a=1;
}
在C++中const修饰的常量,不能被直接修改,但是可以通过指针进行间接修改
来看下面的例子:
运行后输出 5 3
单步执行,利用内存窗口进行查看,未修改前a为3
当利用指针间接修改a后,a在内存中显示5
原意是想通过指针修改const常量a的值,运行后发现输出的a依然是3,a的值表面上并没有被改变。
但是查看内存窗口,发现a已经被改变,这里是编译器优化导致的,遇见a时编译器直接从寄存器中读取3给a,而不从内存中读取!
为了改善这种状况,我们可以在定义a时再加一个volatile修饰,避免编译器优化:
来源:http://www.cnblogs.com/Lynn-Zhang/p/5689969.html
阅读全文
0 0
- 指针修改const
- 通过指针修改const变量
- 修改const指针所指向的值
- const变量通过指针修改问题
- 用指针修改const变量问题
- const变量通过指针修改 详解
- const变量通过指针修改 详解
- 使用非const指针修改const int的值
- C语言中的const与指针的同址异值现象(指针究竟能不能修改const问题)
- 笔试题——通过指针修改const变量
- 程序笔试题-const变量通过指针修改问题
- C++中如何修改const变量 (指针)
- 程序笔试题-const变量通过指针修改问题
- CONST 指针
- const指针
- CONST指针
- const 指针
- const指针
- 数据结构——串—串的模式匹配算法
- new collections
- 树状数组 (模板)
- RegExp对象
- 转发和重定向
- 指针修改const
- Linux下(Ubuntu14.04)安装Opencv3.3.0
- 几种简单范数介绍
- 【实战】4-13 Spring及SpringMVC配置
- 软考-软件开发模型
- bzoj1691: [Usaco2007 Dec]挑剔的美食家
- Laravel5.5生成验证码与验证正确与否
- 菜鸟初谈web开发
- OC数组中的nil