首先:
所以:
* &在不同地方有不同的含义,不能一味地认为*是取所指对象,&也不是仅用于取地址,他们都是修饰符。
#include<iostream> using namespace std; int main() { int i = 42; int *p; int *&r = p; cout << &r << endl; if (&r == &p) cout << "ok" << endl; r = &i; *r = 0; system("pause"); return 0; }
结果:
所以:
*&r = p 相当于 *(&r) = p
从右往左看,r先跟&合并,表示“别名”,&r相当于一个变量,比如说就是rp,
p的另一个名字叫&r,p的地址和r的地址是一样的
那*(&r)不就是一个指针吗,这个指针指向了p,p也是一个指针,他们能互相赋值的原因就是他们都是int类型的指针
原文:https://www.cnblogs.com/foremember/p/10483401.html