将结构指针传递给c中的函数

我将指向结构的指针传递给函数时遇到问题。 我的代码基本上如下所示。 在main函数中调用modify_item后,stuff == NULL。 我希望stuff是一个指向item结构的指针,元素等于5.我做错了什么?

void modify_item(struct item *s){ struct item *retVal = malloc(sizeof(struct item)); retVal->element = 5; s = retVal; } int main(){ struct item *stuff = NULL; modify_item(stuff); //After this call, stuff == NULL, why? } 

因为您按值传递指针。 该函数对指针的副本进行操作,从不修改原始函数。

将指针传递给指针(即struct item ** ),或者让函数返回指针。

 void modify_item(struct item **s){ struct item *retVal = malloc(sizeof(struct item)); retVal->element = 5; *s = retVal; } int main(){ struct item *stuff = NULL; modify_item(&stuff); 

要么

 struct item *modify_item(void){ struct item *retVal = malloc(sizeof(struct item)); retVal->element = 5; return retVal; } int main(){ struct item *stuff = NULL; stuff = modify_item(); }