【发布时间】:2011-06-27 04:05:37
【问题描述】:
这些是一些愚蠢的问题..我想问..请帮助我理解它
const int i=100; //1
///some code
long add=(long)&i; //2
疑问:对于上面的代码..编译器会先遍历整个代码
用于决定是否应该分配内存..或者首先它将存储
变量在只读内存位置,然后在 2 处分配 stroage
疑问:为什么取变量的地址强制编译器将变量存储在内存中..甚至
虽然 rom 或 register 也有地址
【问题讨论】:
-
是什么让你认为寄存器有地址?
-
const 变量是矛盾的
-
所以他们(注册)只用他们各自的名字来定义?
-
@user388338:如果您认为 register 可以或不能以 epciffly 方式解决,那么您正在考虑特定的硬件。一些硬件已注册,它们由魔术内存位置表示,从而使它们可寻址,而其他硬件则不能。 C++ 在很多硬件上编译,所以你的想法可能不适用于所有硬件。第 2 行仅意味着编译器必须以具有地址的方式生成(请注意,如果您打开高度优化,实际地址可能会完全消失(这完全取决于))。听到的主要担心是你正在抛弃 const-ness。
标签: c++