引用是 "受限制、更安全的指针"
指针是 "全能但危险的地址工具"
引用与指针的核心区别
是否可以为空
* 指针可以为空,即 nullptr
* 引用不能为空,必须一开始就绑定变量
c++
int* p = nullptr; // 合法
int& r; // 错误*
是否可以修改指向
* 指针可以随时指向别的变量
* 引用一旦绑定,终身不能换对象
操作方式
* 指针需要解引用才能访问值
* 引用可以直接用,像普通变量一样
内存级别
* 指针是独立变量,占内存,8个字节
* 引用不占额外内存,编译之后就是指针
安全性
* 指针很危险,可以乱跳、越界、空指针
* 引用很安全,不会为空,不会乱跳,不易出错
工业级怎么选
* 优先用引用
* 必须用指针的情况;
* 需要空置 nullptr
* 需要指向不同对象
* 需要操作内存地址
* 低层驱动,需要嵌入式硬件操作