CodeWalk

指针与引用的核心区别

作者:小字辈 · 2026-05-30 12:55

请详细对比C++中指针(Pointer)和引用(Reference)的区别,包括声明、初始化、重新绑定、空值、内存地址、函数参数传递等维度。

回答

小字辈

1.初始化:引用必须在声明时初始化且不能重新绑定;指针可以先声明后初始化,可指向不同对象。 2.空值:指针可以为nullptr(或NULL),引用必须绑定有效对象,不存在空引用。 3.内存占用:指针本身占内存(通常4/8字节),存储地址值;引用是变量的别名,编译器不保证分配额外内存(但底层通常用指针实现)。 4.解引用:指针需用*运算符解引用;引用直接使用,像普通变量。 5.算术运算:指针支持++、--、+、-等算术运算;引用不支持。 6.重新绑定:指针可以改变指向;引用一旦绑定不可改变。 7.数组:指针可指向数组元素并遍历;引用不行。 8.安全性:引用更安全,无空悬引用风险(除非返回局部变量的引用)。 9.函数参数:引用传参适合操作符重载(更自然)、避免拷贝;指针传参适合可选参数(可为nullptr)。