【C语言】构造长度可变的二维数组
1 #include <stdio.h> 2 #include <malloc.h> 3 #include <memory.h> 4 5 int getArray(int ***p,int m,int n)//构造一个m*n维数组,并清零 6 { 7 int i; 8 *p=(int **)malloc(sizeof(int*)*m); 9 memset(*p,0,sizeof(int*)*m); 10 if(NULL==p) 11 { 12 printf("memory error!"); 13 return -1; 14 } 15 for(i=0;i<n;i++) 16 { 17 (*p)[i]=(int*)malloc(sizeof(int)*n); 18 memset((*p)[i],0,sizeof(int)*n); 19 if(NULL==(*p)[i]) 20 { 21 printf("memory error!"); 22 return -1; 23 } 24 } 25 return 0; 26 } 27 int main() 28 { 29 30 int n;//输入数 31 int **p=NULL;//二级指针,留作可变长度二维数组用 32 printf("input a number:"); 33 scanf("%d",&n); 34 if((n<0)||(n>2147483647))//检查n是否溢出 35 { 36 printf("invalid number!"); 37 return -1; 38 } 39 /*构造一个n*n维数组,并清零*/ 40 state=getArray(&p,n,n); 41 42 return 0; 43 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。