【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 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。