malloc 分配2维动态数组
- C/C++ code
#include <stdio.h>#include <stdlib.h>void main(){ int nrows,ncolumns; int **Array; int i,j; printf("please input nrows&ncolumns:\n"); scanf("%d%d",&nrows,&ncolumns); Array=(int **)malloc(nrows*sizeof(int *)); for(i=0;i<ncolumns;i++) Array[i]=(int *)malloc(sizeof(*Array)); for(i=0;i<nrows;i++) { for(j=0;j<ncolumns;j++) { Array[i][j]=1; printf("%d ",Array[i][j]); //动态数组的成员都可以用正常的数组下标 arrayx[i][j] } printf("\n"); } free(Array);}如果输入非正方形矩阵就会崩溃……哪里错了。
PS:代码是网上扒来的……。
[解决办法]
for(i=0;i<ncolumns;i++)
Array[i]=(int *)malloc(sizeof(*Array));
修改为:
for(i=0;i<nrows;i++)
Array[i]=(int *)malloc(ncolumns*sizeof(*Array));
[解决办法]
1楼正解