将结构指针传递给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(); }