c ++中的const变量

use*_*338 3 c++

这些是一些愚蠢的问题..我想问.请帮助我理解它

const int i=100;   //1
///some code
long add=(long)&i;  //2
Run Code Online (Sandbox Code Playgroud)

怀疑:对于上面的代码...将编译器首先通过整个代码
来决定是否应该分配内存..或者首先它将
变量存储在只读内存位置然后..分配stroage以及2

怀疑:为什么采用变量强制编译器的地址将变量存储在内存中...
即使rom或者寄存器也有地址

Nat*_*ate 5

在您的代码示例中,add包含地址而不是值i.我相信你可能认为i没有存储在正常的内存中,除非/直到你拿到它的地址.不是这种情况.

const并不意味着该值存储在ROM中.它存储在普通内存(通常是堆栈)中,就像任何其他变量一样.const意味着编译器会花一些时间来阻止您修改该值.

const不是,也从来没有打算成为某种安全机制.如果获取内存的地址并想要修改它,则可以这样做.当然,这几乎总是一个坏主意,但如果你真的需要这样做,那就有可能.