可能重复:
寄存器变量的地址
register int yy = 6;
int * myptr = &yy;
cout<<myptr<<" "<<&yy<<" "<<*myptr<<" "<<yy<<endl;
Deitel和Deitel第三版C++如何编程:第307页最后一行说——地址运算符不能应用于用存储类寄存器声明的变量。上面的代码怎么打印出来的:0x28ff24 0x28ff24 6 6
我是否遗漏了一些关于指向具有寄存器存储类的变量的指针?
编译器忽略您的register
请求,因为您的代码采用yy
.
你的书已经过时了。
在现代 C++ 中,register
不推荐使用关键字,并且对声明没有影响(除了可能向编译器提示该变量可能被大量使用)。它不会阻止您获取变量的地址。
C确实有这个限制;并且可能旧版本的 C++ 也有,但我没有任何历史文件可以证实这一点。
寄存器变量地址重复
另外,这里是 IBM 为其编译器之一提供的关于此事的文档: