const修饰的常量 不能被直接修改 但是可以通过指…

2018-06-17 23:59:06来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

大家都知道如下代码中,被const限定的a是不可以被直接修改的
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修饰,避免编译器优化:

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:WaitForSingleObject用法

下一篇:qt5中信号和槽的新语法