这些是一些愚蠢的问题..我想问.请帮助我理解它
const int i=100; //1
///some code
long add=(long)&i; //2
Run Code Online (Sandbox Code Playgroud)
怀疑:对于上面的代码...将编译器首先通过整个代码
来决定是否应该分配内存..或者首先它将
变量存储在只读内存位置然后..分配stroage以及2
怀疑:为什么采用变量强制编译器的地址将变量存储在内存中...
即使rom或者寄存器也有地址
在您的代码示例中,add包含地址而不是值i.我相信你可能认为i没有存储在正常的内存中,除非/直到你拿到它的地址.不是这种情况.
const并不意味着该值存储在ROM中.它存储在普通内存(通常是堆栈)中,就像任何其他变量一样.const意味着编译器会花一些时间来阻止您修改该值.
const不是,也从来没有打算成为某种安全机制.如果获取内存的地址并想要修改它,则可以这样做.当然,这几乎总是一个坏主意,但如果你真的需要这样做,那就有可能.
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |