c语言 const和volatile的区别?
浏览量:2179
时间:2021-03-11 20:39:22
作者:admin
const和volatile的区别?
Const指定此变量不能在我们的程序代码中更改,但我们不能保证此值会由于硬件原因而更改。Volatile关键字表示编译器执行强制I/O寻址,而不是读取寄存器的值。一般来说,对于连续变量,编译器将首先读取数据并将其保存到寄存器中。使用时直接读取寄存器中的数据,加快了处理速度。但是,有时,如实时读取键值或其他需要实时读取的数据,它不能使用寄存器,而必须使用易失性开关,否则关键字就不见了。所以有时const和volatile可以一起使用。
以下关于const和volatile说法,正确的有哪些?
我的理解是:
const由编译器优化并成为常量。
volatile的功能是告诉编译器不要优化变量(不要直接使用CPU缓存值,而是直接使用内存值)
const volatile是告诉编译器变量没有优化(它没有优化为常量或变量,这是从内存中获取的)
一个参数可以既是volatile又是const的么?
volatile修饰符告诉编译器变量的值可以用程序未显式指定的任何方式更改。最常见的例子是外部端口的值,在程序中不需要任何赋值语句就可以更改它。这种变量你可以用volatile修改它,complier不会优化它。 const修改的变量不能在程序内部修改,但可以在程序外部修改,就像上面提到的外部端口的值一样。如果您只使用const,编译器可能会优化这些变量,volatile将是安全的。
一个参数既可以是const还可以是volatile吗?
你好,我是天上的星星。我很高兴为你回答。当然。例如,只读状态寄存器。Const指定变量不能在我们的程序代码中更改,但是我们不能保证值会由于硬件原因在代码之外更改。Volatile意味着我们的代码将同时更新并使用最新的值。比较专业的理科知识,欢迎关注我。如果你喜欢我的回答,也请给我表扬或转发,你的鼓励是支持我写下来的动力,谢谢。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。