Jason Koo

      Stay hungry, Stay foolish!

导航

动态申请与释放二维数组

Posted on 2013-05-05 12:49  Jason Koo  阅读(185)  评论(0编辑  收藏  举报

在笔试和面试中有时候会考到动态申请和释放二维数组的问题。这篇文章就简单地介绍一下在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;