2014-03-06 22 views
-1

我開始學習C中的指針。爲什麼我在C中的指針有錯誤?

爲什麼我在第8行有錯誤&i

這是源:

char * func(char *d, char *str) 
{ 
    return d; 
} 

int main(int argc, char *argv[]) 
{ 
    char *i = NULL; 
    func(&i, "aaa"); // line 8. here I have the error (in "&i") 
} 

回答

3

你傳入char**和函數需要char*。您需要通過i而不需要&運算符的地址,因爲這樣您就可以獲取指針的地址。

只是通過func(i, "aaa");

1

當你寫&i,要傳遞的i的內存地址,但由於i已經是一個char*&i類型是char**(指針指向char)。因此,您有一個無關的&,導致類型不匹配。簡單地除去&並傳遞i給函數與服用其地址:

func(i, aaa); //no need to use & on a variable that is already a pointer 
0

按照您的函數原型func(char *d, char *str)第一參數接受指針char類型在char *i;i的和是char類型的指針,以便直接傳遞給功能。

如果你想通過&i的功能,你需要有pointer to pointer variablechar **d

相關問題