![482a4ee6896f584dc6c28d2039657f0f.png](https://i-blog.csdnimg.cn/blog_migrate/b5c3fa372717aa2db6d5643dc77b135f.jpeg)
const 和 volatile是两个关键字。
其中const是内存被初始化之后,就不能修改它。
volatile则指的是,就算内存地址不变,程序本身不对这个变量进行修改,它也可能会改变。这是告诉编译器,不要进行某些优化。比如常量折叠,它会抹去某些变量,但这些变量可能是不同过程序改变的,这个时候,volatie告诉他不要再和么做。
还有一个变量叫mutable,这个函数的意思是就算这个东西是const,也可以被修改。
典型代表如下列结构所示:
struct data
{
char name[30];
mutable int accessed;
}
那么,如果我们初始化一个
const data veep = {"Claybourne Clodde",0 };,
那么它的作用是限定修改veep成员。
accessed++;
const 是一个不允许改变的值,它的作用域,通常只有一个文件。
对于C++来说,const在头文件中。那么如果在cpp中声明了一个头文件,包含了这个有const的头文件,const就会在cpp中可以使用。
如果在函数外使用const定义一个数,它是内部链接性的,就像是在前面加了一个static一样。
当然,如果有的人希望某个常量(const)是extern的,那就只有一个办法了,就是加个extern,在对应的地方,都声明一下。
唯一和常规的变量,比如全局变量不一样,这个东西,全局变量可以不加extern,但是const则必须加,这是规定。