0

可能重复:
寄存器变量的地址

register int yy = 6;
int * myptr = &yy;
cout<<myptr<<" "<<&yy<<" "<<*myptr<<" "<<yy<<endl;

Deitel和Deitel第三版C++如何编程:第307页最后一行说——地址运算符不能应用于用存储类寄存器声明的变量。上面的代码怎么打印出来的:0x28ff24 0x28ff24 6 6

我是否遗漏了一些关于指向具有寄存器存储类的变量的指针?

4

3 回答 3

4

编译器忽略您的register请求,因为您的代码采用yy.

于 2012-11-18T14:07:36.260 回答
2

你的书已经过时了。

在现代 C++ 中,register不推荐使用关键字,并且对声明没有影响(除了可能向编译器提示该变量可能被大量使用)。它不会阻止您获取变量的地址。

C确实有这个限制;并且可能旧版本的 C++ 也有,但我没有任何历史文件可以证实这一点。

于 2012-11-18T14:41:48.967 回答
0

寄存器变量地址重复

另外,这里是 IBM 为其编译器之一提供的关于此事的文档:

http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fregdef.htm

于 2012-11-18T14:10:43.550 回答