二重指针 二维数组函数传递问题 求c/c++大佬相助 谢谢大佬们 c语言基础没有打好

错误显示:error:cannotconvert'int(*)[4]'to'int**'forargument'3'to'intmColoring(int,int,int... 错误显示:error: cannot convert 'int (*)[4]' to 'int**' for argument '3' to 'int mColoring(int, int, int**)'| 展开
 我来答
duanggi
2019-05-16 · TA获得超过196个赞
知道小有建树答主
回答量:240
采纳率:87%
帮助的人:144万
展开全部
规定若是将二维数组作为实参传递给函数,那么在函数的参数声明中必须显示地指明数组的列数,因此可以改为如下:
将int mColoring(int n, int m, int** a) 改为int mColoring(int n, int m, int (*a)[4]),或者直接就写为int mColoring(int n, int m, int a[4][4]),亦或者int mColoring(int n, int m, int a[][4])。参数的行数没有关系。
追问
大佬  如果将二重指针作为实参传递给函数,那么在主函数里面怎样改呢
追答

你说的二重指针如果指的就是二维数组的话,在主函数里面不用修改,就按照你提问里面的就好了。

补充,如果你真的需要直接传入二重指针int **p,不是二维数组的话,可以采取动态内存分配的方法。下面的二重指针pp就可以直接传入int mColoring(int n, int m, int** a) 了。

#define ROW 4
#define COL 4
int** pp;
pp = (int **)malloc(sizeof(int *)*ROW);
for(i=0;i<ROW;i++)
{         
    pp[i] = (int *)malloc(sizeof(int)*COL);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式