写在前面
对于指针, 我们一般关注的有以下两点: (1)解指针类型; (2)地址。
1. 多级指针
直观来看,多级指针就是一个“解指针的结果仍然为指针”的一种指针. 下面通过代码示例来具体看下:
#include <iostream>
int main() {
int value = 42;
int* ptr = &value; // 单级指针,指向变量 value
int** ptr2 = &ptr; // 二级指针,指向指针 ptr
int*** ptr3 = &ptr2; // 三级指针,指向指针 ptr2
std::cout << "Value: " << value << std::endl; // 输出变量值
std::cout << "Value via ptr: " << *ptr << std::endl; // 通过单级指针访问值
std::cout << "Value via ptr2: " << **ptr2 << std::endl; // 通过二级指针访问值
std::cout << "Value via ptr3: " << ***ptr3 << std::endl; // 通过三级指针访问值
return 0;
}
输出结果:
Value: 42
Value via ptr: 42
Value via ptr2: 42
Value via ptr3: 42
在这个示例中, ptr 是一个指向 value 的单级指针,ptr2 是一个指向 ptr 的二级指针,而 ptr3 是一个指向 ptr2 的三级指针。通过多级指针,我们可以间接地访问 value 的值。
2. 泛型指针
如果用同样的句式来理解泛型指针,那么它就是“一个解指针类型为空”的指针. 代码示例如下:
#include <iostream>
void