在笔试和面试中有时候会考到动态申请和释放二维数组的问题。这篇文章就简单地介绍一下在C和C++中动态申请与释放二维数组的方法。
在C中动态申请二维数组的代码如下:
#include <stdio.h> #include <stdlib.h> // 该头文件中包含malloc和free int i, j; int row, col; // 定义二维数组的行和列 int **a; // 定义二维数组指针 scanf("%d%d", &row, &col); // 输入二维数组的行与列 a = (int **) malloc(sizeof(int *) * row); // 申请行 for(i = 0; i < row; i++) { a[i] = (int *) malloc(sizeof(int) * col); // 申请列 }
在C中动态释放二维数组的代码如下:
for(i = 0; i < row; i++) { free(a[i]); // 释放每一列 } free(a); // 释放每一行
以上是C代码实现。如果使用C++的话,可以使用C++中提供的new和delete操作符实现。
在C++中动态申请二维数组的代码如下:
#include <iostream> using namespace std; int row, col; cin >> row >> col; int **a; a = new int*[row]; for(int i = 0; i < row; i++) { a[i] = new int[col]; }
在C++中动态释放二维数组的代码如下:
for(int i = 0; i < row; i++) { delete[] a[i]; } delete[] a;
浙公网安备 33010602011771号