在 C++ 中,指针(Pointer) 和 引用(Reference) 都可以用来间接访问变量,但它们在语法、使用方式、内存管理和可变性等方面存在明显的区别。
1. 指针和引用的基本定义
指针(Pointer)
指针是存储变量地址的变量,可以指向其他变量。
可以动态更改指向的对象(即指针可以重新指向不同的地址)。
需要使用 * 和 & 操作符进行解引用和取地址操作。
int a = 10;
int* p = &a; // p 存储 a 的地址
*p = 20; // 通过指针修改 a 的值
引用(Reference)
引用是某个变量的别名(alias),必须在定义时初始化,且不能更改绑定的对象。
访问方式和普通变量相同,不需要 * 进行解引用。
主要用于函数参数传递和返回值,以提高效率并避免指针的繁琐操作。
int a = 10;
int& ref = a; // ref 是 a 的引用
ref = 20; // 直接修改 a 的值
指针和引用的主要区别
|
比较项 |
指针(Pointer) |
引用(Reference) |
|
是否可以更改指向 |
可以随时修改指向的变量 |
绑定后不可更改 |
|
是否必须初始化 |
可以不初始化(但使用前必须初始化) |
定义时必须初始化 |
|
是否可以为空 |
可以指向 nullptr |
不能为 nullptr(必须绑定一个变量) |
|
是否支持运算 |
可以进行指针运算(如 p++) |
不支持运算 |
|
解引用方式 |
需要 * 进行解引用 |
直接使用变量名访问 |
|
应用场景 |
适用于动态分配、数组、数据结构 |
适用于函数参数传递、避免拷贝开销 |
563

被折叠的 条评论
为什么被折叠?



