c - 修复不兼容的指针类型警告

标签 c pointers

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/

相关文章:

C 程序打印垃圾值

C++转换题

检查字符串是否包含字符串

检查 char 变量的内容 - C 编程

c - apache 模块 ap_log_perror 与 ap_log_error 处于不同的级别

mysql - 有问题 if 和 while ((row = mysql_fetch_row(query_results)) !=0)

c - 避免在 makefile 中重复行

c++ - 动态函数内存? C++

c - 在 C 中添加和排序链表

使用 malloc 连接字符串