Bonjour,我一直收到这个警告,我已经尝试了所有方法来修复警告,但没有任何结果。该程序仍然有效,但警告很烦人,我很想知道“为什么”。
它是一个表,从用户那里获取表中位置的输入,并在函数 encuentRuta 中使用该位置。
这是(部分)代码:
char encuentRuta (int posv, int posh, char lab[TAMV][TAMH]);
int main (int argc, char *argv[]) {
int altura = atoi(argv[1]);
int base = atoi(argv[2]);
/* Define the table */
char laberinto[TAMV][TAMH] = {LABERINTO};
encuentRuta (altura, base, &laberinto);
我不断收到的错误是:
> warning: incompatible pointer types passing 'char (*)[8][12]'
> to parameter of type 'char (*)[12]' [-Wincompatible-pointer-types]
> encuentRuta (altura, base, &laberinto);
> ^~~~~~~~~~
> laberinto.c:16:44: note: passing argument to parameter 'lab' here
> char encuentRuta (int posv, int posh, char lab[TAMV][TAMH]);
感谢您的帮助。
最佳答案
在 encuentRuta()
调用中省略 laberinto
之前的 &
。
该消息已尽力向您解释。如果你取一个二维数组的地址(&laberinto
),你会得到一个指向数组的指针,写成SomeType (*)[size1][size2]
,或者char (*)[8][12]
在你的例子中。要传递一个数组,你只需简单地命名它:
encuentRuta(altura, base, laberinto);
关于c - 修复不兼容的指针类型警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614672/