类型限定符
类型限定符提供两个属性之一标识符。 const 类型限定符声明对象不能更改。 volatile 类型限定符声明值可能会出现合理地更改在程序控件之外出现,如并行执行的线程的项目。
这两个类型限定符, const 和 volatile,只能出现一次于声明。 类型限定符可以以任何类型说明符;但是,无法在一个多个项目的第一个逗号后面。 例如,下面的声明是合法的:
typedef volatile int VI;
const int ci;
这些声明不是的合法:
typedef int *i, volatile *vi;
float f, const cf;
类型限定符是关系,仅当访问标识符为表达式的左值。 有关左值和表达式的信息,请参见 左值和 R 值表达式 。
语法
- 类型限定符:
constvolatile
下面是合法的 const 和 volatile 声明:
int const *p_ci; /* Pointer to constant int */
int const (*p_ci); /* Pointer to constant int */
int *const cp_i; /* Constant pointer to int */
int (*const cp_i); /* Constant pointer to int */
int volatile vint; /* Volatile integer */
如果数组类型的规范由类型限定符,元素没有限定,而不是数组类型。 如果函数类型的规范包括限定符,该行为不确定。 volatile 和 const 不影响值或对象的算术属性的范围。
此列表描述如何使用 const 和 volatile。
const 关键字可用于修改任何基本或程序集类型或指针转换为任何类型或 typedef对象。 如果项目声明仅 const 类型限定符,其类型将采用 const int。 const 变量存储区中的只读区域初始化或可将。 ,因为在所有情况下,需要函数不更改指针 const 关键字作为声明指针很有用。 const 。
编译器假定,,随时在过程中, volatile 变量可由未知获取进程使用或修改它的值。 因此,无论在命令行上指定的优化,代码为每个分配给或引用 volatile 变量必须生成,即使它不会起作用。
如果单独使用 volatile , int 假定。 volatile 类型说明符来提供对特定内存位置的可靠的访问。 使用可以获取或修改由通知处理程序,通过并行执行程序,或者由特定硬件例如内存映射 I/O 控件注册的数据对象的 volatile 。 可以将变量声明为其生存期的 volatile ,也可以将单个引用 volatile。
项目是 const 和 volatile,,则该项目不能自己的程序情况下合理地修改,但是,能某些异步修改过程。