这是一个关于指针和引用的问题

int a=1;
int  &b=a;

为啥b和*b的值一样,都是1,求解
为啥b和*b的值一样,都是1,求解
为啥b和*b的值一样,都是1,求解
为啥b和*b的值一样,都是1,求解

#include <iostream>
using namespace std;

int main()
{
    int a=1;
    int  &b=a;
    cout << b;
    cout << *b; //这一行是非法的,根本不能编译,既然是非法的,何来的值是1
    cout << *((int *)b); //强行转换,通过编译,因为0x00000001这个地址是非法的,所以运行的时候也是报错。
    return 0;
}