22-总结_限定符
B.3.3 总结:限定符
关键字
使用下面关键字限定变量:
const、volatile、restrict
一般注释
限定符用于限制变量的使用方式。不能改变初始化以后的 const 变量。编译器不会假设 volatile 变量不被某些外部代理(如,一个硬件更新)改变。 restrict 限定的指针是访问它所指向内存的唯一方式(在特定作用域中)。
属性
const int joy = 101; 声明创建了变量 joy ,它的值被初始化为 101 。
volatile unsigned int incoming; 声明创建了变量 incoming ,该变量在程序中两次出现之间,其值可能会发生改变。
const int * ptr = &joy; 声明创建了指针 ptr ,该指针不能用来改变变量 joy 的值,但是它可以指向其他位置。
int * const ptr = &joy; 声明创建了指针 ptr ,不能改变该指针的值,即 ptr 只能指向 joy ,但是可以用它来改变 joy 的值。
void simple (const char * s); 声明表明形式参数 s 被传递给 simple() 的值初始化后, simple() 不能改变 s 指向的值。
void supple(int * const pi); 与 void supple(int pi[const]); 等价。这两个声明都表明 supple() 函数不会改变形参 pi 。
void interleave(int restrict p1, int restrict p2, int n); 声明表明 p1 和 p2 是访问它们所指向内存的唯一方法,这意味着这两个块不能重叠。