关于Volatile和const关键字!
来源:互联网 发布:亿富鼎电话软件下载 编辑:程序博客网 时间:2024/05/17 03:44
C语言关键字volatile表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。
该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程。对于C编译器来说,它并不知道这个值会被修改,自然就把它cache在寄存器里面。
C编译器是没有线程概念的,这时候就需要用到volatile。
volatile的本意是指这个值可能会在当前线程外部被改变,也就是说,我们要在threadFunc中的intSignal前面加上volatile关键字,这时候,编译器知道该变量的值会在外部改变,因此每次访问改变量时会重新读取。
const可定义一个常量。如:int const a;
那么,既然a的值不能被修改,如何让a拥有一个值呢?两种方法:
第一,在定义时对它初始化,如:int const a=10;
第二,在函数声明为const的形参在函数被调用时会得到实参的值。
需要强调的是牵涉到指针变量的情况。如下所示:
int const *a;const修饰的是指针所指向的内容。
int *const a;const修饰的是a,而a是地址,所以这个指针的地址不可变。
当const写在关键字之后时,查看const究竟指定了何种数据类型为常量要看const之前的数据类型。在第一条语句中,const指定常量的对象是整形数据,即指针a所指向的内存单元的整型内容,因此,该整型数据是不可被改变的,而a这个指针本身的值(地址)是可以被改变的。
在第二个语句中,const指定常量的对象是指向整形数据的指针,则该指针本身(地址)的值是不可被改变的,而该指针所指向的内存单元的内容则是可以改变的。
- 关于Volatile和const关键字!
- const和const volatile关键字
- 关于const和volatile
- C++中的const关键字和volatile关键字
- 转:关键字Const和Volatile的使用
- 关键字const和volatile的区别
- 关于volatile和restrict关键字
- 关于volatile和restrict关键字
- 关键字static,const,volatile
- const volatile 关键字
- const、volatile、mutable关键字
- 关键字:static,const,volatile
- const , volatile 关键字分析
- const、volatile、mutable关键字
- C++基本功:全面掌握const、volatile和mutable关键字
- C++基本功:全面掌握const、volatile和mutable关键字
- C++基本功:全面掌握const、volatile和mutable关键字
- C++关键字static、const和volatile的几点说明
- 如何制作CHM文件
- [Flex]Flex SDK 4(Gumbo)更方便的自定义样式、自定义SparkSkin(二)
- SD-信用控制
- c语言的幻方源码
- C++ Primer 学习笔记:vector类
- 关于Volatile和const关键字!
- 用户体验方面的感想
- windows/centOS/RedHat 更改 MAC 地址方法
- 开发人员一定要加入收藏夹的网站
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- 一生中10件无能为力的事情!
- CLR Via C# 学习笔记(4) 方法 构造函数
- 利用Google日历安排工作计划
- Aqua Data Studio 连接Mysql乱码的解决办法