const和volatile的区别?
const指定此变量不能在我们的程序代码中更改,但我们不能保证此值会由于硬件原因而更改。volatile关键字表示编译器执行强制i/o寻址,而不是读取寄存器的值。一般来说,对于连续变量,编译器将首先读取数据并将其保存到寄存器中。使用时直接读取寄存器中的数据,加快了处理速度。但是,有时,如实时读取键值或其他需要实时读取的数据,它不能使用寄存器,而必须使用易失性开关,否则关键字就不见了。所以有时const和volatile可以一起使用。
以下关于const和volatile说法,正确的有哪些?
我的理解是:
const由编译器优化并成为常量。
volatile的功能是告诉编译器不要优化变量(不要直接使用cpu缓存值,而是直接使用内存值)
constvolatile是告诉编译器变量没有优化(它没有优化为常量或变量,这是从内存中获取的)
一个参数可以既是volatile又是const的么?
volatile修饰符告诉编译器变量的值可以用程序未显式指定的任何方式更改。最常见的例子是外部端口的值,在程序中不需要任何赋值语句就可以更改它。这种变量你可以用volatile修改它,complier不会优化它。const修改的变量不能在程序内部修改,但可以在程序外部修改,就像上面提到的外部端口的值一样。如果您只使用const,编译器可能会优化这些变量,volatile将是安全的。
一个参数既可以是const还可以是volatile吗?
你好,我是天上的星星。我很高兴为你回答。当然。例如,只读状态寄存器。const指定变量不能在我们的程序代码中更改,但是我们不能保证值会由于硬件原因在代码之外更改。volatile意味着我们的代码将同时更新并使用最新的值。比较专业的理科知识,欢迎关注我。如果你喜欢我的回答,也请给我表扬或转发,你的鼓励是支持我写下来的动力,谢谢。
原文标题:c语言 const和volatile的区别?,如若转载,请注明出处:https://www.saibowen.com/news/19661.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。