#include <iostream>
using namespace std;
int main(){
int a=10,b=20,c=30;
int *p=&a;//该句话就是p中存储了x的地址,即,指向了x,*p就是x; &x意思就是引用整型变量x,得到x的地址,赋值给p,
int &r=a;//r是x的一个别名,从现在起r就捆绑到了x这个变量上了上,r就是x;
cout<<"变化前: *p="<<*p<<" r="<<r<<" &a="<<&a<<endl;
//首先验证变量r变化后
r=b;//把y的值赋给r,实际上就是赋给了x,x的值此时发生变化,*p也要变化,但p指向的地址不变化,还是a的地址
cout<<"变量r变化后:*p="<<*p<<" p="<<p<<" r="<<r<<" a="<<a<<" &a="<<&a<<endl;
//再验证p指向变化后
p=&c;//让p指向c,*p变化,p也变化,其他不变
cout<<"p指向变化后:*p="<<*p<<" p="<<p<<" &c="<<&c<<" r="<<r<<" a="<<a<<" &a="<<&a<<endl;
//再验证*p变化后
*p=b;//只是改变*p的值,地址不变化,还是c的地址,不是指向b,但是c的值变化
cout<<"*p变化后: *p="<<*p<<" p="<<p<<" c="<<c<<" &b="<<&b<<" r="<<r<<" a="<<a<<" &a="<<&a<<endl;
return 0;
}
<img src="https://img-blog.csdn.net/20151122135557004?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />