二重指针 二维数组函数传递问题 求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**)'|
展开
1个回答
展开全部
规定若是将二维数组作为实参传递给函数,那么在函数的参数声明中必须显示地指明数组的列数,因此可以改为如下:
将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 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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询