c语言创建动态数组_c语言中二维动态数组的创建

原问题:c语言中二维动态数组的创建
分类:编程开发 > 最后更新时间:【2016-12-12 23:19:56】
问题补充:

不知道行数也不知到列数,怎么创建一个二维动态数组(在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  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    2

    分享到:

    其他回答

    其它网友回答:
    int a[ ][ ]

    其它网友回答:
    for(i=0;i<=3;i++)//3 示例行
      for(j=0;j<=2;j++)//2示例列
            scanf("%d",&a[i][j]);屏幕输入赋值


    追问:
    点生成之后显示有两个错误 a没有下标 a的大小未知
      推荐