volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

volatile int i = 10; 
  • volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。

  • volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)

  • const 可以是 volatile (如只读的状态寄存器)

  • 指针可以是 volatile

参考文献

重磅干货 :五万字长文总结 C/C++ 知识(上)

详解C/C++中volatile关键字_小白的逆袭-CSDN博客_c++ volatile

C++关键字volatile相关推荐

  1. C++关键字Volatile的作用

    2019独角兽企业重金招聘Python工程师标准>>> 和const对应,const表示变量是恒定不变的,而Volatile则相反,表示变量随时都可能被改变,因此每次获取变量都需要重 ...

  2. C语言:关键字volatile详解!

    一.volatile 介绍 参看:volatile详解 参看:C Language Keywords Indicates that a variable can be changed by a bac ...

  3. C语言再学习 -- 关键字volatile

    上周确实事情挺多的,年会.公司聚餐,一到过年就有忙不完的事分心.还好C语言再学习总结的已经差不多了,年前也不展开别的了,接下来这十几天.总结几篇典型的面试题吧. 言归正传,接下来看看关键字 volat ...

  4. 每日一题(17)—— 关键字volatile的作用和三个不同的应用场合

    关键字volatile的作用和三个不同的应用场合 作用:防止编译器优化: (1)并行设备的硬件寄存器(如状态寄存器):// #define S5PV210_GPIO_DATA (*(volatile ...

  5. 关键字volatile的含意

    关键字volatile有什么含意并给出三个不同的例子. 答:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量 ...

  6. C语言面试题小练——第10天:宏定义一年的秒数、变量定义练习、关键字volatile有什么含意

    文章目录 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 2. 用变量a给出下面的定义 3. 关键字volatile有什么含意?并给出三个不同的例子. 1. 用 ...

  7. C语言基础 — 关键字volatile有什么含意? 三个不同的例子。

    关键字volatile有什么含意? 并给出三个不同的例子. 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量 ...

  8. C语言中的关键字“ volatile”的用法(摘)

    C语言中的关键字" volatile"的用法(摘) volatile 这个ANSI C 关键字在经典的C 教程中很少提及,高层编程的人也可能永远都 不会用到,但是作为嵌入式开发者来 ...

  9. C++中关键字volatile和mutable用法

    C/C++中的volatile关键字和const对应,用来修饰变量,用于告诉编译器该变量值是不稳定的,可能被更改.使用volatile注意事项: (1). 编译器会对带有volatile关键字的变量禁 ...

最新文章

  1. python image stiching_Python自然语言处理,词云图生成
  2. linux 2.6.35 arm map_lowmem,第一次玩arm和linux,9261移植2.6.39无法挂载jiffys2文件系统,谁能指点一下...
  3. 记一次被DDoS敲诈的历程
  4. VTK:PolyData之WarpScalar
  5. 用键盘来操纵鼠标指针(鼠标损坏时的应急措施)
  6. javascript字典中添加数组_在javascript中合并两个字典数组
  7. Hibernate框架ORM的实现原理-不是技术的技术
  8. 科学家对医疗预印本服务器的影响,美国化学学会将启动化学论文预印本服务
  9. java中lock_Java中的锁
  10. A Hierarchical Reinforced Sequence Operation Method for Unsupervised Text Style Transfer
  11. agile java_《Agile Java》阅读笔记
  12. java-多线程安全问题
  13. linux 后台进程管理,Linux 后台进程管理利器 Supervisor
  14. Python报错:IndentationError: unindent does not match any outer indentation level问题的解决办法及原因
  15. 上海拍牌服务器协议,上海拍牌服务器地址
  16. 黑盒测试 之 因果图法
  17. firefox浏览器window.event is undefined问题
  18. Python图像增强(翻转和旋转)
  19. 免费电脑纯净绿色好用的软件
  20. 使用Simu5G实现车联网V2X通信过程(两个简单的示例)

热门文章

  1. 《微信跳一跳》安卓手机刷分软件搭建及攻略
  2. 在 Azure 中管理 Windows 虚拟机的可用性
  3. 设计模式C#实现(三)——外观模式
  4. 一个build.xml实例
  5. Loadrunner进行md5加密方法
  6. cisco PIX防火墙的配置及注解完全手册
  7. Mr Big [To be with you]
  8. JavaScript的“ this”通过成立一个高中乐队来解释
  9. 查缺补漏 | Python自定义函数
  10. 神经网络基础知识梳理