volatile:
用法:
#include<iostream>
int main()
{
const int n=100;
volatile const int m=200;
int *p=(int *)&n;
*p=123;
p=(int *)&m;
*p=456;
std::cout<<"n="<<n<<"m="<<m<<std::endl;
return 0;
}
输出结果是: n=100m=456
解释:
n和m都为常量 不可修改通过n和m,但是可以通过指针修改其内存中的值从而改变n和m的值
但是在运行时 c++对其进行的优化 不访问内存取值,而是 n=100 c++就认为其值为100
volatile的作用是使其每次都从新访问内存取值 则m=456
c程序则不同 没有c++的优化 从而每次都访问内存 结果是 n=123m=456