在c++里register变量已经和普通变量无区别吗?

教科书中说定义register的变量后,变量数据存放在寄存器中,我编了段代码为什么取这个变量的地址还是内存地址? //VisualC++6.0环境 void main() { register int a; cout<<&a<<endl; } 输出:0012FF7C void main() { int a; cout<<&a<<endl; } 输出:0012FF7C 两次结果一样!是否说明在VC里面已经取消register本来面目,都以普通变量处理,还是中间有什么过程? 我是菜鸟希望大家别骂我

第1个回答  2019-07-26
是的,其实REGISTER变量只是在早期内存很小的老机器上十分有用,现在基本无用了。REGISTER的初衷是为了快速的读写一个变量,但同时十分的有限,一个程序里往往只可以定义很少的REGISTER变量。
现在已不在使用他了,他被终结了。
第2个回答  2019-07-21
其实并没有取消register
只是现在的编译器都能够的根据程序中的变量使用情况,将其中的使用频率很高的变量自动设为register,儿无需人为的规定了。
如果自己指定了register变量,但是编译器如果发现不合理,也会自动的取消程序员指定的register变量
第3个回答  2020-05-10
理论上说,他是与你硬件里面的寄存器相关的,因为寄存器容量比较小,也少,如果你定义的数据量大,编译器是会把你定义的寄存器变量优化放到堆栈里面去的,

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网