malloc动态分配数组以及指针数组大小

来源:互联网 发布:java lucene 内容搜索 编辑:程序博客网 时间:2024/05/23 02:02

对于二维数组:

int i,j,m,n;scanf("%d%d",&m,&n);int **a;a=(int**)malloc(sizeof(int*)*m);for(i=0;i<m;++i)a[i]=(int *)malloc(sizeof(int)*n);


一般来说,当给两个数分别表示行列,但两个数的范围过大,就需要动态分配。

之后完全可以把a看做二维数组名称而用a[][]来做题。


对于指针数组

int n,i,j;char *s[15];scanf("%d",&n);getchar();for(i=0;i<n;++i){gets(a);s[i]=(char*)malloc(sizeof(char)*(strlen(a)+1));strcpy(s[i],a);}

注意对于字符串数组,strlen+1, (malloc后面的是字节数,别忘了还有'\0'.)

通常用于存字符串。