如何遍历动态分配的二维数组
时间: 2023-10-13 08:21:54 浏览: 38
可以使用双重循环来遍历动态分配的二维数组,例如:
```c++
int rows = 3;
int cols = 4;
int** arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
}
// 遍历二维数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
// 释放内存
for (int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
```
其中,`arr` 是一个指向指针的指针,它指向了一个包含 `rows` 个指针的数组,每个指针都指向一个包含 `cols` 个 `int` 值的数组。双重循环遍历二维数组时,外层循环控制行数,内层循环控制列数。最后,需要释放动态分配的内存,避免内存泄漏。
相关问题
C语言中如何遍历动态分配的二维数组
在C语言中遍历动态分配的二维数组可以通过两重for循环来实现。假设动态分配的二维数组为arr,大小为n行m列,则遍历代码如下:
```
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
// 对arr[i][j]进行操作或访问
}
}
```
动态创建二维数组C++
在 C++ 中,我们可以使用指针和动态内存分配来创建二维数组。下面是一个示例代码,演示如何动态创建一个 3 行 4 列的二维数组:
```cpp
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 4;
// 动态分配内存
int **arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
}
// 输入二维数组元素
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << "请输入第 " << i+1 << " 行第 " << j+1 << " 列的元素:";
cin >> arr[i][j];
}
}
// 输出二维数组元素
cout << "输入的二维数组元素为:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < rows; i++) {
delete [] arr[i];
}
delete [] arr;
return 0;
}
```
在上面的代码中,我们首先定义了二维数组的行数和列数,然后使用 `new` 运算符动态分配了内存。我们使用一个指向指针的指针 `int **arr` 来表示二维数组,首先分配了 `rows` 个指针,然后对于每个指针再分配了 `cols` 个整型变量。这样就创建了一个 3 行 4 列的二维数组。
接下来,我们通过两个嵌套的循环遍历二维数组,输入元素,并输出输入的二维数组元素。在输入和输出完成后,我们使用 `delete` 运算符释放了内存,避免内存泄漏。
希望这个示例代码能够帮助你动态创建二维数组。