c++多维数组new
时间: 2025-03-04 10:45:58 浏览: 37
### 使用 `new` 创建多维数组
在 C++ 中,可以使用 `new` 操作符动态分配一维或多维数组。对于多维数组而言,通常通过指针来管理这些数组。
#### 动态创建二维数组
为了创建一个二维数组,可以通过双重指针(即指向指针的指针)实现:
```cpp
#include <iostream>
int main() {
int rows = 3;
int cols = 4;
// 分配行数目的指针空间
int** matrix = new int*[rows];
// 对每一行分配列数目大小的空间
for (int i = 0; i < rows; ++i) {
matrix[i] = new int[cols];
}
// 初始化矩阵中的元素
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = i * cols + j;
}
}
// 打印矩阵内容
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n";
}
// 清理资源
for (int i = 0; i < rows; ++i) {
delete[] matrix[i]; // 删除每行的数据
}
delete[] matrix; // 删除行指针本身
return 0;
}
```
这段代码展示了如何利用 `new` 来构建和释放一个简单的整型二维数组[^3]。
#### 动态创建三维数组
同样地,也可以扩展到更高维度的情况,比如三维数组:
```cpp
#include <iostream>
int main() {
int depth = 2;
int height = 3;
int width = 4;
// 分配深度方向上的指针数组
float*** cube = new float**[depth];
// 针对每一个深度层分配高度方向上的指针数组
for (int d = 0; d < depth; ++d) {
cube[d] = new float*[height];
// 再次针对每个高度层分配宽度方向的实际数据存储区域
for (int h = 0; h < height; ++h) {
cube[d][h] = new float[width];
// 可选:初始化数值
for (int w = 0; w < width; ++w) {
cube[d][h][w] = static_cast<float>(d * height * width + h * width + w);
}
}
}
// 访问某个特定位置的值作为例子
std::cout << "cube[1][2][3] = " << cube[1][2][3] << '\n';
// 清除所有分配的记忆体
for (int d = 0; d < depth; ++d) {
for (int h = 0; h < height; ++h) {
delete[] cube[d][h];
}
delete[] cube[d];
}
delete[] cube;
return 0;
}
```
此示例说明了更复杂的三维浮点数数组是如何被建立起来以及之后应该如何妥善清理所使用的堆内存。
阅读全文
相关推荐


















