求理解reference的本质和pointer的区别的一到迷你小题,该如何解决

求理解reference的本质和pointer的区别的一到迷你小题
C/C++ code
#include <iostream>
using namespace std

int main()
{
    int a = 10;
    int& b = a;
    int* c = &b;

    cout << &a << endl;
    cout << &b << endl;
    cout << &(*c) << endl;
    
    return 0;
}


sent to cout的这三个内存地址是一样的吗?请高手分别详细解释一下,Thank you!


------解决方案--------------------
当然一样
int &b = a;则b相当于是a的一个别名,地址是一样的,比如一个人叫李波,那么波波也是他。
由上可知*c = &b 等价于*c = &a;
c 记录a(b)的地址,那么*c 就是a了,然后你就知道了
------解决方案--------------------
引用和指针的区别:
1)引用是变量的别名,指针实质是一个变量,但存放的是变量的地址;
2)引用在定义的时候必须赋初值,并且在生存周期内不能再改变;指针的值可以改变;
3)引用的值不可以赋值为0或者NULL,但是指针可以赋值为NULL
 
针对楼主的题:
变量 a 分配了一个空间,引用 b 是这个空间的别名,就相当于同一个人有两个名字,所代表的内存空间还是一个。int* c = &b 等价于 int* c = &a ,定义了一个指针,指向的是 a(b)这个内存空间。所以上面三者是一样的