指向寄存器变量的指针

时间:2012-11-18 14:05:33

标签: c++ pointers

  

可能重复:
  Address of register variable

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

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

我是否遗漏了有关使用寄存器存储类的变量的指针?

3 个答案:

答案 0 :(得分:4)

编译器忽略了您的register请求,因为您的代码的地址为yy

答案 1 :(得分:2)

你的书已经过时了。

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

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

答案 2 :(得分:0)