引用 vs 指针 · 别名 vs 存地址的实体

引用 int& r 是变量别名:定义即绑定、从一而终、无需解引用 · 指针 int* p 是独立变量:存地址、可改指向、需 * 解引用
指针 int* p p 是独立变量,里面存放别人的地址 变量 a @0x10 3 变量 b @0x20 7 int* p 0x10 p = &a; // p 存 a 的地址 引用 int& r r 不是新变量,只是 a 的另一个名字 同一块内存 @0x40 5 a r (别名) int& r = a; // r 即 a,绑定即固定 指针可「见异思迁」 p = &b; ✓ 改指向 b *p = 9; 需解引用才碰本体 可为空 nullptr · 占自己的存储 引用「从一而终」 r = b; 把 b 的值赋给 a(不改绑!) r = 9; 直接改 a,无需 * 不能为空 · 不可改绑 · 类型安全