首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

malloc 分配2维动态数组解决方案

2012-05-06 
malloc 分配2维动态数组C/C++ code#include stdio.h#include stdlib.hvoid main(){int nrows,ncolumns

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楼正解

热点排行