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

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

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

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

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

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));

http://blog.csdn.net/lixiaogang_theanswer/article/details/68939806


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