2013-12-16 89 views
0

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]); 

感謝您的幫助。

回答

5

在呼叫encuentRuta()之前省略&之前laberinto

該信息盡最大努力向您解釋。如果您獲取二維數組的地址(&laberinto),則會得到一個指向數組的指針,該數組在您的示例中編寫爲SomeType (*)[size1][size2]char (*)[8][12]。要傳遞數組,您只需將其命名爲:

encuentRuta(altura, base, laberinto); 
+0

爲幫助學習者而歡呼! –

相關問題