11.* & 指针 引用

首先:

所以:

* &在不同地方有不同的含义,不能一味地认为*是取所指对象,&也不是仅用于取地址,他们都是修饰符。

#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类型的指针

posted @ 2019-03-06 15:13  虚设经年  阅读(261)  评论(0)    收藏  举报