我開始學習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")
}
我開始學習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")
}
類型的&i
不是char *
它char * *
。
你傳入char**
和函數需要char*
。您需要通過i
而不需要&運算符的地址,因爲這樣您就可以獲取指針的地址。
只是通過func(i, "aaa");
當你寫&i
,要傳遞的i
的內存地址,但由於i
已經是一個char*
的&i
類型是char**
(指針指向char)。因此,您有一個無關的&
,導致類型不匹配。簡單地除去&
並傳遞i
給函數與服用其地址:
func(i, aaa); //no need to use & on a variable that is already a pointer
按照您的函數原型func(char *d, char *str)
第一參數接受指針char
類型在char *i;
i
的和是char類型的指針,以便直接傳遞給功能。
如果你想通過&i
的功能,你需要有pointer to pointer variable
即char **d
。
他們之間有什麼區別? – user2986392
一個是指向char的指針,另一個是指向char的指針。 – Sadique