引用 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,无需 *
不能为空 · 不可改绑 · 类型安全
▶ 重播