duck__lu
2017-05-07 06:58
采纳率: 100%
浏览 2.0k
已采纳

C语言中动态分配二维数组

int *a[col] = (int *) malloc(col * sizeof(int));
这一句话为什么错了,为什么不能用指针数组动态分配二维数组?
是不是只能用int **a才能动态分配二维数组?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • blownewbee 2017-05-07 08:02
    已采纳

    col在哪里定义的,是常数么?
    如果不是,不能这么写
    可以写int *a = (int *) malloc(col * sizeof(int));

    点赞 打赏 评论
  • qq_36054037 2017-05-07 07:59

    定义数组的时候不能用变量。

    点赞 打赏 评论
  • jklinux 2017-05-07 08:02

    可以用指针数组装分配出来数组的地址的。上面语句是指针数组初始化错了。

    int *p[col];表示多个指针,存放多个地址了。你malloc一次只返回一个地址

    点赞 打赏 评论
  • 你这是分配的一维数组,还有数组只能是常量,不能动态分配。不一定使用int **来分配 ,给你个正解吧

                int m=8,n=8;//8*8
         int **a=(int**)malloc(m*sizeof(int*));
         memset(a,0,m*sizeof(int*));
         for(int i=0;i<n;i++)
         {
             a[i]=(int*)malloc(n*sizeof(int));
             memset(a[i],0,n*sizeof(int));
         }
    
        //或者
         int (*a)[8]=new int[8][8];
       memset(a,0,8*8*sizeof(int));
    
    
    点赞 打赏 评论
  • 君子黎 2017-05-07 09:25
    点赞 打赏 评论
  • duck__lu 2017-05-07 09:33

    谢谢各位大触,懂了,懂了

    点赞 打赏 评论

相关推荐 更多相似问题