首先小小打击你们一下
你们都理解错误了
*&q是指针的引用
也就是说 q是指针*p的别名
接下来 小改一下你们的程序
using namespace std;
int main(int argc, char* argv[])
{
int a=7;
int *p=&a;
int *&q=p;
cout<<"&a="<<&a<<endl;
cout<<"p="<<p<<endl;
cout<<"&p="<<&p<<endl;
cout<<"q="<<q<<endl;
cout<<"*q="<<*q<<endl;
cout<<"&q="<<&q<<endl;
cout<<"*&q"<<*&q<<endl;
}
这是我们可以看到q 居然没有自己的地址
为什么呢
因为q是一个指针引用 它只是p的一个别名而已 他相当于一个常量
他的内容就是p的地址
所以我们可以看到 a的地址 p的指向地址 *&q别名地址 都是a的地址
而&p 以及&q 注意这里不是取q的地址 而是取的p的地址 因为q是p的引用
取引用的地址 当然就是取引用对象的地址 所以又是一样的