指针和引用的区别
特性 | 指针 | 引用 |
---|---|---|
语法 | 使用 * 定义,使用 & 访问 | 使用 & 定义,直接使用变量名访问 |
可以为 null | 可以为 nullptr | 不可以为空 |
必须初始化 | 可以不初始化(会成为野指针) | 必须初始化 |
可更改 | 可以指向不同的对象 | 一旦绑定,不能更改 |
语法复杂性 | 使用复杂,需要解引用 | 使用简单,像普通变量一样使用 |
指针算术 | 支持指针加减运算 | 不支持 |
何时使用指针,何时使用引用
-
使用指针:
- 当需要动态分配内存或数组时。
- 当需要指向可选的对象(可以为空)时。
- 当需要指针算术运算时。
-
使用引用:
- 当需要创建别名以简化代码时。
- 当需要保证引用始终有效时。
- 当想避免指针可能带来的错误时。