美文网首页
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的作用和用法总结

    const const(constant)关键字可修饰变量、函数参数、返回值或函数体。 定义只读变量。 限制函数参...

  • const 和 volatile

    使用const修饰的变量,代表只读,不可以修改,如下面程序,运行的时候就可以发现,编译不过, const是在编译期...

  • 你是我的面试吗?iOS开发之const,static,exter

    --- const --- const作用 ·被const修饰的变量是只读的 const的用法 ·const用来修...

  • 四种类型的转换

    转换类型操作符作用const_cast去掉类型的 const 或 volatile 属性去 const 属性用co...

  • 9_const和volatile分析

    关键词:const只读变量、const变量的本质、const修饰函数参数和返回值、volatile 1. cons...

  • 第1章 let和const命令

    基本用法 es6新增了let和const命令。let用于声明变量,用法与var类似,不过let命令声明的变量只作用...

  • ES6语法新特性

    一、let和const命名 let命令是用来申明变量的。用法和var类似,不同的是let作用域只在{}之间,var...

  • Volatile用法和原理

    前言   Volatile的关键字从Java5出现后就存在了,很多人做了很长时间的Java开发都未必用的到这个关键...

  • ES6

    ①const和let var 只有 全局作用域 和 函数作用域 没有块级作用域 { }let 、 const...

  • 第八章 常量

    简介:使用关键字const和volatile 8.1 值替代 应该完全用const取代#define的值替代 C+...

网友评论

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

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