您的位置:首页 > 其它

const、volatile和restrict的作用和用法总结

2014-11-01 18:40 309 查看
const作用:[/u]const(constant)关键字可修饰变量、函数参数、返回值或函数体。1.定义只读变量。2.限制函数参数。防止意外修改。增加程序安全性和可靠性。如const char *p表示,p指针指向的值不可更改,就是这个指针不能用来修改数据;如char *const p表示,p指针指向的地址不可更改;如const int arr[];则数组内的值都不能修改。const char *const p表示,所指向的数值和地址都不能变。const double locked[4];double *pc=rates;pc=locked;//这句是非法的。因为locked是不能修改的。在源文件中使用const int i = 1;则在其他文件中应使用extern const int i;如在头文件中则应用 static const int i = 1;因为各文件中需要包含这个头文件,需要static保证内部性。但如果用此方法存储数组,因为各个文件都需要创建这个静态数组,可能会占用较多的存储空间,需要从更多方面去考虑它的利弊。
volatile作用:
volatile限定词则表示变量除了可被程序修改外还可能被外部代理修改,如变量保存当前的时钟时间。
编译器优化编译时会把不变的值放在寄存器,以供读取,标记volatile可以保证不被放入寄存器。
如不能被程序改变而能被代理改变则const volatile int i;
restrict作用:
restrict只能用于指针 int* restrict ptr,这样就使得ptr是指向某数据块的唯一方式。
可防止数据被其他指针操作。如在memcpy中为防止有重叠区域,采用restrict修饰传入的指针。同时,restrict也有利于编译器优化。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: