多级指针是指向指针的指针,如二级指针int可指向一级指针,常用于动态二维数组;例如用int matrix = new int*[rows]分配行,再循环分配每列实现3x4动态数组。

在C++中,多级指针(也叫指向指针的指针)是通过逐层声明指针类型来实现的。多级指针常用于动态二维数组、函数参数修改指针本身、以及复杂数据结构操作等场景。
什么是多级指针
多级指针是指指向另一个指针的指针。最常见的形式是二级指针(int**),但也可以有三级(int***)、四级甚至更高层级。
例如:
int a = 10;int* p = &a; // 一级指针,指向变量a
int** pp = &p; // 二级指针,指向指针p
int*** ppp = &pp; // 三级指针,指向二级指针pp
二级指针的实际应用:动态二维数组
使用二级指针可以创建动态大小的二维数组,这在处理矩阵或表格数据时非常有用。
立即学习“C++免费学习笔记(深入)”;
示例代码:
// 分配一个 3x4 的整型二维数组int rows = 3, cols = 4;
// 步骤1:创建指针数组(每一行的地址)
int** matrix = new int*[rows];
// 步骤2:为每一行分配内存
for (int i = 0; i matrix[i] = new int[cols];
}
// 使用示例
matrix[1][2] = 100;
// 释放内存
for (int i = 0; i delete[] matrix[i];
}
delete[] matrix;
多级指针作为函数参数传递
当需要在函数内部修改指针本身(而不是它指向的内容)时,必须传入二级指针。
例如:动态分配内存并让调用方看到新地址。
void createArray(int** arr, int size) {*arr = new int[size]; // 分配内存
for (int i = 0; i (*arr)[i] = i * i;
}
}
// 调用方式:
int* myArr = nullptr;
createArray(&myArr, 5);
注意事项与常见错误
使用多级指针时容易出错,需注意以下几点:
- 确保每一层指针都正确初始化,避免野指针
- 动态分配的内存必须成对使用 new/delete,防止内存泄漏
- 访问时注意层级关系,*pp 是一级指针,**pp 才是实际值
- 越界访问和重复释放内存是常见问题
基本上就这些。多级指针虽然灵活,但要小心管理内存和层级关系,建议在现代C++中优先考虑使用 vector、unique_ptr 等更安全的替代方案,除非确实需要手动控制内存。不过理解多级指针仍是掌握C++底层机制的重要一步。











