C语言的学习——二维数组的动态分配
要使用stdlib库,先分配行的大小,然后再循环分配每一列的大小。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **a,i,j,n,m;
scanf("%d%d",&n,&m);
a = (int**)malloc(sizeof(int*)*n); //为二维数组分配n行
for (i = 0; i < n; i++){
//为每列分配m个大小
a[i] = (int*)malloc(sizeof(int)*m);
}
for (i = 0; i < n; i++{
//初始化
for (j = 0; j < m; j++){
scanf("%d",&a[i][j]) ;
}
}
for (i = 0; i < n; i++){
//释放内存
free(a[i]);
}
free(a);
return 0;
}