总结

指针是保存地址的变量,可以为空、可变;
引用是变量的别名,必须初始化、不可为空、不可重新绑定。
cpp中优先使用引用,只有在需要“可空/可变指向”时才使用指针

指针和引用对照

对比点 指针(Pointer) 引用(Reference)
本质 保存地址的变量 变量的别名
是否必须初始化
是否可以为空
是否可以改变指向
是否有独立内存
访问方式 *p解引用 直接用变量名
sizeof 指针大小(8字节) 等于所引用对象大小
多级 int** 不存在
常见用途 动态数组、数组、指针传参 参数传递、返回值

示例

指针

1
2
3
4
5
int a = 10;
int* p = &a;

*p = 20;
cout << a; // 20

p存的是a的地址
需要*才能访问值

引用

1
2
3
4
5
int a = 10;
int& r = a;

r = 20;
cout << a; // 20

r就是a不需要*