在 C 编程语言中,我们不允许将地址运算符 (&) 与使用寄存器存储类说明符声明的变量一起使用。
它给出 error: address of register variable ‘var_name’ requested
但如果我们编写一个 c++ 程序并执行相同的任务(即使用带有寄存器存储变量的 &
)它不会给我们任何错误。
例如。
#include <iostream>
using namespace std;
int main()
{
register int a;
int * ptr;
a = 5;
ptr = &a;
cout << ptr << endl;
return 0;
}
输出:-
0x7ffcfed93624
这一定是 C++ 的一个额外特性,但问题在于 C 和 C++ 中的寄存器类存储之间的区别。
最佳答案
在 C++ 中刻意删除了获取地址的限制 - 它没有任何好处,并且使语言更加复杂。 (例如,如果您将引用绑定(bind)到 register
变量会发生什么?)
register
关键字多年来一直没有多大用处 - 编译器非常擅长自行确定将什么放入寄存器。事实上,在 C++ 中,该关键字目前已被弃用,最终将被删除。
关于c++ - 为什么地址运算符 ('&' ) 可以与在 C++ 中使用寄存器存储类说明符声明的对象一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118577/