用C中的malloc函数作动态两维数组

如题,该如何做?
2024-11-28 19:33:57
推荐回答(2个)
回答(1):

你的意思是用malloc函数申请二维数组??
calloc就是申请二维数组的,何必用malloc呢!不过我可以给你个malloc的例子

char **buf = NULL; //二维数组
int x = 10, y = 10; //数组大小buf[x][y];
//分配空间
buf = malloc(x*sizeof(char)); //给第一层分配空间
for(int i=0;i buf[i] = malloc(y*sizeof(char)); //每个分配第二层空间
//然后就可以按buf[x][y]的形式访问了!

回答(2):

#include
#include

int main()
{
int **a=NULL; //a[10][20]
int i,j;
a=(int **)malloc(10*sizeof(int**));
for(i=0;i<10;i++)
a[i]=(int*)malloc(20*sizeof(int*));

for(i=0;i<10;i++)
for(j=0;j<20;j++)
a[i][j]=i+j;

for(i=0;i<10;i++)
{
for(j=0;j<20;j++)
printf("%2d ",a[i][j]);

printf("\n");
}

for (i=0;i<10;i++)
{
free(a[i]);
}
free(a);

return 0;
}