C语言中的volatile关键字
2014-09-16 18:53
169 查看
谈谈我理解和总结的volatile关键字吧,volatile关键字是C语言不常用的一个关键字,估计很多人都没听说过,我们项目中由于多线程设计的时候也是用到了volatile关键字,特此总结一下:
1,首先说一下编译器优化。
编译器会将i放进寄存器,b会直接从寄存器中取值。编译器做这样的优化是为了快。但是这样会有问题,一旦i所在的内存改变了,这样岂不是得到的错误的结果,所以为了避免编译器优化产生错误结果,volatile关键字可以被用来申明i。
2,应用场景,我所能用到的应用场景就是,多线程情况下,如果一个变量经常被改变,是需要将它申明为volatile类型的。
3,典型面试题,如下:
这么申明是错的,因为ptr指向的记录可能已经变了,那样的话就不是求平方了。
(本文完)
1,首先说一下编译器优化。
int i=5; int a=i; ...... int b=i;
编译器会将i放进寄存器,b会直接从寄存器中取值。编译器做这样的优化是为了快。但是这样会有问题,一旦i所在的内存改变了,这样岂不是得到的错误的结果,所以为了避免编译器优化产生错误结果,volatile关键字可以被用来申明i。
2,应用场景,我所能用到的应用场景就是,多线程情况下,如果一个变量经常被改变,是需要将它申明为volatile类型的。
3,典型面试题,如下:
int square(volatile int * ptr){ int a=*ptr; int b=*ptr; return a*b; }
这么申明是错的,因为ptr指向的记录可能已经变了,那样的话就不是求平方了。
int square(volatile int * ptr){ int a=*ptr; return a*a; }
(本文完)
相关文章推荐
- 对C语言的volatile关键字的理解
- C语言中volatile关键字的作用
- C语言中的volatile关键字
- C语言中volatile关键字的作用
- c语言中volatile关键字
- C语言中volatile关键字的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- 【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解
- 【c++】C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- c语言中volatile关键字
- c语言中volatile关键字
- C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- C语言中volatile关键字的作用
- c语言中volatile关键字的作用
- C语言中volatile关键字的作用