我試圖創建一個C程序獲取動態分配這樣的二維字符數組的函數功能:創建可獲取並返回一個二維動態分配
char **arr;
int N, M;
scanf("%d%d", &N, &M);
arr = malloc(N * sizeof(char *));
if(arr == NULL)
{
printf("Not enough memory\n");
exit(0);
}
for(i = 0; i < N; i++)
{
arr[i] = malloc(M * sizeof(char));
if(arr[i] == NULL)
{
printf("Not enough memory\n");
exit(0);
}
}
,然後返回該數組。我已經聲明瞭這樣的功能(在輸入代碼之前)。
char check(char **arr);
然後,編輯功能,我已經開始這樣的:
check(**arr) {
/*code here*/
return **arr;
}
,並調用功能,我用這個:
check(**arr);
然而,當我嘗試用gcc -ansi -pedantic -Werror編譯它,我得到這些錯誤/警告:
file.c: In function ‘main’:
file.c:42:2: error: passing argument 1 of ‘check’ makes pointer from integer without a cast [-Werror]
check(**arr);
^
file.c:6:6: note: expected ‘char **’ but argument is of type ‘char’
char check(char **arr);
^
file.c: At top level:
file.c:57:7: error: expected declaration specifiers or ‘...’ before ‘*’ token
check(**arr) {
^
cc1: all warnings being treated as errors
42行是當我像上面所說的調用主函數中的檢查函數時。 第6行是當我聲明檢查功能。 第57行是當我開始編輯像我上面所說的功能。
我知道我應該已經發布了所有的代碼,但它是一個學校作業,所以我不能。我知道這很煩人,我很抱歉,但使用我在終端中得到的錯誤,我試圖指出錯誤在哪裏。我再次抱歉,謝謝你的時間。
哇,謝謝,除了最後一個在第57行清除了很多錯誤。這是否意味着我必須輸入「check(char ** arr){」而不是「check(** arr){」 ? – VarimathrasXX
@VarimathrasXX聲明param爲'char ** arr',就像'char check(char ** arr)'一樣'但是,我已經可以告訴你,你還需要傳遞size信息,'char檢查(char ** arr,int rows,int cols)' – WhozCraig