2014-02-10 110 views
0
#include<stdio.h> 
#include<string.h> 

char getInput(char *x[50]); 

main(){ 

char string[50]; 
getInput(&string); 
} 

char getInput(char *x[50]){ 
printf("What is the string?"); 
gets(*x); 
} 

總是收到這些錯誤...錯誤指針類型不兼容?

exer7.c:20:2:警告:從兼容的指針類型傳遞「getInput」的參數1 [默認啓用] getInput(&串); ^ exer7.c:5:6:note:expected'char * 'but argument is of'char()[50]' char getInput(char * x [50]);

我已經改變了指針和&號,但我真的不知道正確的指針類型,請幫助:(

順便說一句,這只是一個代碼片段,我有很多其他用戶聲明功能我不需要在這裏發表。

回答

1
void getInput(char (*x)[50]); 

int main(){ 
    char string[50]; 
    getInput(&string); 
    return 0; 
} 
1

char *x[50]聲明x作爲array of pointers. & string`的類型是指向數組的指針。這兩種類型是不相容的。

更改你的函數的ñ聲明

char getInput(char x[50]); 

,並把它作爲

getInput(string); 
+0

啊,所以你不必使用指針自動更新像整型值和漂浮...謝謝:) – user3024406

+0

事實上,數組名轉換爲指向它第一個元素傳遞給時功能在大多數情況下。 – haccks

0

getInput(&string);你不應該傳遞的string&。只需要將char數組的基地址string作爲參數傳遞。

char getInput(char *x[50]);這個正式的論點也不正確。這應該是一個指向char或50字節字符數組的指針。