新手求问c语言如何定义二维动态数组

如题…如何定义一个二维动态数组,并且最好给一下定义完如何使用的方法

4个回答

int **p;   
int i;       

//申请空间   
p = (int**)malloc(sizeof(int*)*M);   
for (i=0; i<M; i++)   
    p[i] = (int*)malloc(sizeof(int)*N);   

//释放空间   
for (i=0; i<M; i++)   
    free(p[i]);   
free(p);   

1.如果是GCC编译器,直接支持长度是变量的二维数组

 int n,m;
 int [n][m];

2.如果不支持这样的形式,就用malloc申请

 int n,m,i;
 int **arr = (int **)malloc(sizeof(int *) * n);
 for(i = 0; i < n; i++)
 {
   arr[i] = (int *)malloc(sizeof(int) * m);
 }

为什么不用c++呢
Vector

Bat_numb
Bat_numb 老师要求…
大约 4 年之前 回复

个人意见:

用容器代替数组,用智能指针或者new来代替malloc,难道你不觉得用前面的方法定义二维数组太麻烦了吗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问