美文网首页
const、volatile和restrict的作用和用法总结

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

作者: 胡哈哈哈 | 来源:发表于2016-05-20 00:20 被阅读215次

    const

    const(constant)关键字可修饰变量、函数参数、返回值或函数体。

    • 定义只读变量。
    • 限制函数参数。防止意外修改。增加程序安全性和可靠性。
      • 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也有利于编译器优化。

    相关文章

      网友评论

          本文标题:const、volatile和restrict的作用和用法总结

          本文链接:https://www.haomeiwen.com/subject/uaogrttx.html