可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。
**const:**const 类型的对象在程序执行期间不能被修改改变。
**volatile :**修饰符 volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。
中断服务程序中修改的供其它程序检测的变量需要加volatile;
例如,使用全局变量后,在中断函数进行修改,在执行函数进行判断,则会出现执行函数的变量一直没有变化;
多任务环境下各任务间共享的标志应该加volatile
存储器映射的硬件寄存器通常也要加voliate,因为每次对它的读写都可能有不同意义。
C++中没有这个关键字,C语言中只有C99增加了
restrict :由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。
int f (int *restrict x, int *restrict y)
{
*x = 0;
*y = 1;
return x;
}
由于两个参数都加了restrict限定,所以两块区域不能重叠,这样才能保证函数运行的准确率。如不加该关键字,则有可能出现重叠,继而出现返回1的结果;