B.4.6 类型修饰符:const、volatile和restrict
关键字const可以放在类型声明之前,通知编译器这个值不能被修改。因此,声明
const int x5=100;
将x5声明为一个整数常量(也就是,在程序执行期间,不再给它指派其他任何值)。编译器无须标记更改const变量值的尝试。
修饰符volatile显式地告知编译器值的更改(通常是动态地)。在表达式中使用volatile变量时,它的值是从该变量出现的任何位置访问的。
要将port17声明为“指向char的volatile指针”类型,可以编写下面的程序行:
char*volatile port17;
关键字restrict可以和指针一起使用。它提示编译器进行优化(类似于变量的register关键字)。关键字restrict向编译器说明指针将是特定对象的惟一引用,也就是,该变量不再被同一作用域内的其他任何变量引用。程序行
int*restrict intPtrA;
int*restrict intPtrB;
告知编译器,在定义intPtrA和intPtrB的作用域范围内,它们将永远不会访问同一个值。它们用于指向整数时(例如,在数组中)是相互排斥的。