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

错误显示:error: cannot convert 'int (*)[4]' to 'int**' for argument '3' to 'int mColoring(int, int, int**)'|

规定若是将二维数组作为实参传递给函数,那么在函数的参数声明中必须显示地指明数组的列数,因此可以改为如下:
将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);
}

温馨提示:答案为网友推荐,仅供参考
相似回答