在C语言中,申请一般数组时,数组大小必须是常量。即使是赋了特定值的变量,也不行,比如:int n=3;int a[3];这样的做法是错误的,我们需要动态申请数组内存,如下申请一个动态整数(int)二维数组:
#include<stdio.h>#include<stdlib.h>int **pp(int m,int n) {int i,j,**pa;pa=(int **)malloc(sizeof(int)*m);//m行的存储空间for(i=0; i<m; i++)pa[i]=(int*)malloc(sizeof(int)*n);//n列的存储空间for(i=0; i<m; i++)for(j=0; j<n; j++)pa[i][j]=0;return pa;}main() {int m,n,i,j,**haha;printf("请输入二维数组的行和列:");scanf("%d%d",&m,&n);haha=pp(m,n);for(i=0; i<m; i++){for(j=0; j<n; j++)printf("%d\t",haha[i][j]);printf("\n");}}
效果如下图所示: