c语言创建动态数组_c语言中二维动态数组的创建
问题补充:
不知道行数也不知到列数,怎么创建一个二维动态数组(在c语言中)?谢谢!
最佳答案
C语言的二维动态数组不能用int a[][]这样的方式
至少有两种方法,一是若你的编译器支持C99以上标准(如gcc),可用可变的下标
如
int x,y;
scanf("%d%d",&x,&y);
int a[x][y]; //直接生成动态的二维数组
另一方法适合所有C的,就是用一维数组代替二维数组(二维数组在内存本身是连续的)
int x,y;
int *a; //一维数组的指针
scanf("%d%d",&x,&y);
a=(int *)malloc(x*y*sizeof(int)); //申请二维数组空间
访问时用
*(a+y*i+j) 来代替a[i][j]; //y为列数
追问:
你给的这是一个一维数组吧???只是存储的数据个数是x*y个??? 追答:
对于二维数组int a[x][y];它占的存储空间的确是x*y个,我用的是用一维数组代替二维数组的方法(我上面说明了)你可以在任何一本教材找到C二维数组的内存存储方法当然,我上面也说过,至少有两种方法,其它的方法如是用指向数组的指针,相对复杂,不适合初学者
追问:
好的 thank you
最佳答案由网友 whoami1978 提供
其他回答
其它网友回答:
int a[ ][ ]
其它网友回答:
for(i=0;i<=3;i++)//3 示例行
for(j=0;j<=2;j++)//2示例列
scanf("%d",&a[i][j]);屏幕输入赋值
追问:
点生成之后显示有两个错误 a没有下标 a的大小未知