求教!动态数组怎样定义?
我想定义一个由个人输入的n阶二维数组,在程序里面该怎样实现?
在C语言中使用动态内存分配的标准方案只有一个就是使用malloc一族函数,这族函数有malloc、free、realloc、calloc四个。
int **array=malloc(height * width);
....
free(array);
都是这样写的。
程序代码:#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,n,i,j;
//*************************************
int **array;
scanf("%d%d",&m,&n);
array=malloc(m*sizeof(int *));
array[0]=malloc(m*n*sizeof(int));
for(i=1;i<m;i++)
array[i]=array[i-1]+n;
//*************************************
for(i=0;i<m;i++)
for(j=0;j<n;j++)
array[i][j]=i+j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",array[i][j]);
printf("\n");
}
//那就free吧,抱歉以前忘记了
free(*array);
free(array);
return 0;
}
程序代码:main()
{
int i,j,a=1,m,n;
int **p;
scanf("%d %d",&m,&n);
p=(int **)malloc(m*sizeof(int *));
*p=(int *)malloc(m*n*sizeof(int));
for(i=0;i<m;i++)
*(p+i)=*p+(i*n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
*(*(p+i)+j)=a++;
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
printf("%3d",*(*(p+i)+j));
printf("\n");
}
printf("\n\n");
getch();
}
