C++ 解引用
在 C++ 中,解引用是指访问指针指向的值的过程。指针存储的是该特定值的内存地址。要访问或修改存储在该地址的值,可以使用以 (*) 表示的解引用运算符。
解引用读取值
以下是访问存储在指针指向地址的值的语法 -
Type value = *pointer; // 获取指针指向地址的值
解引用修改值
解引用运算符的语法,用于修改指针指向地址的值 -
*pointer = newValue; // 设置指针指向地址的值
C++ 解引用示例
这是一个简单示例,演示了 C++ 中的解引用 -
#include <iostream>
using namespace std;
int main() {
int number = 42; // 一个普通的整数变量
int* ptr = &number; // 保存"number"地址的指针
// 解引用以读取值
cout << "原始值: " << *ptr << endl;
// 解引用以修改值
*ptr = 100;
cout << "修改值: " << number << endl;
return 0;
}
输出
原始值: 42 修改值: 100
解释
- 首先,我们声明了一个名为 number 的整型变量,并将其初始化为 42。
- 声明了一个整型指针 ptr。使用取址运算符 & 将 number 的地址赋给该指针。这意味着 ptr 将指向 number 内存地址的位置。
- 现在,我们使用解引用运算符 * 来访问 ptr 指向的地址中存储的值。
- *ptr = 100;这行代码再次使用了解引用运算符,但这次是赋值。
引用 vs 解引用
| 引用 | 解引用 | |
|---|---|---|
| 定义 | 引用 是指一个变量引用另一个变量,它允许你访问或修改原始变量,而无需直接使用其名称。 | 解引用是指访问指针所指向的内存地址所存储的值的过程。 |
| 符号 | & (用于声明) | * (用于表达式) |
| 语法 | dataType&referenceName = existingVariable; | dataType pointerVariable = *pointerName; |
同时显示引用和取消引用的示例
以下示例在代码中同时说明了引用和取消引用。
#include <iostream>
using namespace std;
int main() {
int number = 42;
// 保存"number"地址的指针
int* ptr = &number;
// 引用"number"
int&ref = number;
// 使用指针读取值(解除引用 ptr)
cout << "Original Value (pointer): " << *ptr << endl;
// 使用引用读取值
cout << "Original Value (reference): " << ref << endl;
// 通过指针修改值(取消引用 ptr)
*ptr = 100;
cout << "Modified Value (pointer): " << number << endl;
cout << "Modified Value (reference): " << ref << endl;
// 通过引用修改值
ref = 200;
cout << "Modified Value (reference): " << number << endl;
cout << "Modified Value (pointer): " << *ptr << endl;
return 0;
}
输出
Original Value (pointer): 42 Original Value (reference): 42 Modified Value (pointer): 100 Modified Value (reference): 100 Modified Value (reference): 200 Modified Value (pointer): 200

