参考学习资料:https://www.bilibili.com/video/BV1xP411e75w
指针和引用是 C++ 中两种重要的变量类型,以下是它们的区别:
定义
指针是一个变量,存储另一个变量的地址。
引用是一个别名。
语法
指针用法:
int* ptr;可以为空,也可以再之后改变。引用用法:
int& ref = variable;必须在声明时初始化,之后不能改变。
初始化
指针可以在声明时不初始化,之后可以随时指向不同的地址。
引用必须在声明时初始化,且不能再指向其他变量。
空值
指针可以指向
nullptr,表示不指向任何对象。引用不能为空,必须始终引用一个有效的对象。
使用
指针使用时需要解引用操作符(
*)来访问指针指向的内容。使用时不需要解引用操作符,直接使用引用名即可。
运算符重载
指针支持指针算术运算(如加减),可以进行数组操作。
引用不支持算术运算,引用仅作为别名存在。
内存管理
指针需要手动管理内存(如使用
new和delete),可能导致内存泄漏。引用不涉及内存管理,引用的生命周期与所引用的对象相同。
使用场景
指针适用于需要动态内存分配、数组操作或需要指向不同对象的场景。
引用适用于需要简化语法的场景,尤其是在函数参数传递时。
常量指针与常量引用
指针可以定义常量指针(
const int* ptr)或指向常量的指针(int* const ptr)。引用可以定义常量引用(
const int& ref),但引用本身不能是常量。
语义差异
指针表示“可能没有对象”的状态,适合表示可选的对象。
引用表示“必须有对象”的状态,适合表示必需的对象。
评论区