什么是const真正的意思?只读似乎包含了它对我的意义,但是,我不确定我是对的.
如果只读且const不同,有人可以告诉我为什么吗?
提出这个问题的原因是这个答案,他说const"只是"在C语中是只读的.我认为这一切都 const意味着,无论是C还是C++.他什么意思?
为了回答constC与C++中的具体差异,我创建了一个新问题:"const"在C和C++中有何不同?按照R ..的建议.
rus*_*lik 49
通过const在指示编译器时声明变量,您无意修改该变量.但这并不代表别人没有!它只是允许一些优化并通过编译错误通知(注意,它主要是编译错误,而const == ReadOnly这意味着运行时错误).
const并不意味着只读,因为你可以写const volatile,这意味着它可以随时改变,但我无意修改它.
编辑:这是一个经典的例子:考虑我正在编写从内存映射端口读取当前时间的代码.考虑RTC映射到内存DWORD 0x1234.
const volatile DWORD* now = (DWORD*)0x1234;
Run Code Online (Sandbox Code Playgroud)
这是const因为它是一个只读端口,volatile因为每次我读它都会改变它.
还要注意,许多体系结构有效地将全局变量声明为const只读,因为它是修改它们的UB.在这些情况下,UB将表现为运行时错误.在其他情况下,它将是一个真正的UB :)
这是一个很好的阅读:http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html
编译器不允许声明的内容const被修改.就像你说的那样.
它主要用于函数原型,以通知用户函数在传递指针时不会触及此函数.它也可以作为自己的故障保护.
| 归档时间: |
|
| 查看次数: |
36406 次 |
| 最近记录: |