社区
C语言
帖子详情
晕~,上大学时学了一年C语言,竟然不知道还有volatile
r00t
2010-01-21 10:03:55
RT,猛然发现自己C语言有多么的菜。
请前辈推荐几本“高级”C语言的书?
谢谢~~
...全文
417
32
打赏
收藏
晕~,上大学时学了一年C语言,竟然不知道还有volatile
RT,猛然发现自己C语言有多么的菜。 请前辈推荐几本“高级”C语言的书? 谢谢~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gsx018
2012-03-15
打赏
举报
回复
学习,谢谢!
uda1985
2011-08-05
打赏
举报
回复
[Quote=引用 28 楼 shellfish567 的回复:]
这个关键词主要用于多线程时,和编译器有关,编译器在编译程序时会自动进行优化,如循环里的i,取自寄存器肯定比内存里快,于是很多编译器认为的关键变量都放在寄存器里。这样就会导致假如开多线程,这个线程里改变了一个变量,另一个线程如果从寄存器中读取的话是读的将是旧的变量,值没有变,于是就会出问题了。
这个关键字的作用是针对编译器的,告诉编译器,不要把这个变量放入寄存器中,每次都去必须从内存中读入寄存器,……
[/Quote]
学习了。
shellfish567
2010-01-22
打赏
举报
回复
这个关键词主要用于多线程时,和编译器有关,编译器在编译程序时会自动进行优化,如循环里的i,取自寄存器肯定比内存里快,于是很多编译器认为的关键变量都放在寄存器里。这样就会导致假如开多线程,这个线程里改变了一个变量,另一个线程如果从寄存器中读取的话是读的将是旧的变量,值没有变,于是就会出问题了。
这个关键字的作用是针对编译器的,告诉编译器,不要把这个变量放入寄存器中,每次都去必须从内存中读入寄存器,这样就可以避免多线程时参数更新问题。
弱弱的说说:我以前去面试的时候,遇到三家公司都有这个问题,valitile,第一个不会。。。第二个不会。。第三个必须得会了
evanxgsh
2010-01-22
打赏
举报
回复
想那么多干干什么,如果你工作需要这个知识,自然就学会了,如果用不上,学过很快就会忘。关键在于不断的学习。
forster
2010-01-22
打赏
举报
回复
auto呢
bladesoft
2010-01-22
打赏
举报
回复
上大学时候不知道很正常,不过这个类型在嵌入式领域用的比较多,我以前面试的时候经常被问到volatile类型。
沭水河畔
2010-01-22
打赏
举报
回复
还有个断言assert,话说9楼的四本书我已经看过两本了,第一本和第四本。第一本尚未看完,等看完之后再拿下第三本。
npngsc
2010-01-22
打赏
举报
回复
不做底层的话,很少用到这个修饰词吧
versaariel
2010-01-22
打赏
举报
回复
我去年才知道。。。。。。。我以前去一家公司面试的时候,他们问我一个自认为很难的难题就是关于volatile的
ba_wang_mao
2010-01-22
打赏
举报
回复
4楼好强大
hlyces
2010-01-22
打赏
举报
回复
惭愧~~
yitaohust
2010-01-22
打赏
举报
回复
很好,学习了。我们大学时,老师也跳过这章节了。
challenge99
2010-01-22
打赏
举报
回复
正常啊,我毕业的时候才知道...
赵4老师
2010-01-22
打赏
举报
回复
计算机组成原理→DOS命令→汇编语言→C语言、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言、架构……
a888882008
2010-01-22
打赏
举报
回复
这个关键字,在一般在C语言教科书中很少涉及到,一般编程人员也很少会用到volatile,但是对于嵌入式开发人员来说,这个关键字是很重要的。
volatile 原意是不稳定的,易变的。用此这个关键字修饰变量,表示编译器不应对该变量的读写以及多个volatile变量读写的先后顺序进行优化;对其存取时不能使用寄存器中的备份,每次读必须重新访问相应的内在地址,每次写也须将结果立即回写。
E: volatile int *i = 0x45000000;
int *j = 0x45000000;
*i = 0; // 不被优化*i=0
*i = 1; // 不被优化*i=1
*i = 0; // 不被优化*i=0
*j = 0; //被优化
*j = 1; //被优化
*j = 0; //*j=0
ProgrammerNO1
2010-01-22
打赏
举报
回复
可能是LZ的老师没提到,,呵~~
tan870426
2010-01-22
打赏
举报
回复
不常用的东西
这样的关键字多了吧
很多都不知道
因为不常用
大概只有在面试的时候才会考虑到
寒江易雪_王孙
2010-01-22
打赏
举报
回复
这个貌似我也不知道,太长时间了,忘了
w19881013
2010-01-22
打赏
举报
回复
类和指针~~
珍惜生命远离CPP
2010-01-22
打赏
举报
回复
正常现象,别大惊小怪的。
加载更多回复(12)
用
一年
时间如何能掌握 C++
用
一年
时间如何能掌握 C++reference 谭庆波 哈尔滨工业
大学
计算机博士在读 按照这个路线去学习C++,每个阶段都帮你规划好了学习时间,差不多正好
一年
时间,帮你从入门到进阶一键搞定: 一、C++基础(3个月) 1、...
山科
c语言
考试题库,山科
c语言
考试重点.doc
第二章1整型用于存储整数类型整形包括短整型、整形和长整形。短整型Short int?...32位上的范围: -2147483648~2147483648长整型Long int 或者 long32位上的范围: -2147483648~2147483648
C语言
规定...
C语言
中级内容总结
位操作
C语言
位操作详解(全网最全)_小熊coder的博客-CSDN博客_
c语言
位操作 总结就是:跟0与都变0;跟1与保持不变;跟0或保持不变;跟1或都变1;跟0异或保持不变,跟1异或全都取反。 嵌入式中研究的移位,以及使用...
山科
c语言
考试题库,山科
c语言
考试重点资料.doc
第二章1整型用于存储整数类型整形包括短整型、整形和长整形。短整型Short int?...32位上的范围: -2147483648~2147483648长整型Long int 或者 long32位上的范围: -2147483648~2147483648
C语言
规定...
[
C语言
]比特鹏哥
C语言
的设计目标是提供一种能以简易 的方式编译、处理低级存储器产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管
C语言
提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章