教科书中说定义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变量
只是现在的编译器都能够的根据程序中的变量使用情况,将其中的使用频率很高的变量自动设为register,儿无需人为的规定了。
如果自己指定了register变量,但是编译器如果发现不合理,也会自动的取消程序员指定的register变量
第3个回答 2020-05-10
理论上说,他是与你硬件里面的寄存器相关的,因为寄存器容量比较小,也少,如果你定义的数据量大,编译器是会把你定义的寄存器变量优化放到堆栈里面去的,