我开始学习C语言。
为什么我在&i
的第8行出错?
这是来源:
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")
}
答案 0 :(得分:3)
您正在传递char**
,该函数需要char*
。你需要通过i
而没有&的地址运算符,因为这样你就得到了指针的地址。
只需通过func(i, "aaa");
答案 1 :(得分:1)
&i
的类型不是char *
char * *
。
答案 2 :(得分:1)
当您编写&i
时,您传递的内存地址为i
,但由于i
已经是char*
,因此&i
的类型为char**
(指向char的指针)。因此,您有一个无关的&
导致类型不匹配。只需删除&
并将i
传递给该函数,并取其地址:
func(i, aaa); //no need to use & on a variable that is already a pointer
答案 3 :(得分:0)
根据您的函数原型func(char *d, char *str)
,第一个参数接受char
类型的指针,而char *i;
i
中是char类型的指针,因此将其直接传递给函数。 / p>
如果您想将&i
传递给该功能,则需要pointer to pointer variable
char **d
。