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