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