求教!动态数组怎样定义?
我想定义一个由个人输入的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(); }