我有一个结构
typedef struct HASH_NODE
{
char* word;
struct HASH_NODE* next;
} HASH_NODE;
及功能
void foo(char* destptr, const char* srcptr)
{
destptr = malloc(strlen(srcptr)+1);
strcpy(destptr, srcptr);
}
我想将结构字段 .word 传递给 foo,并且我希望函数返回后字段的值会发生更改,但事实并非如此:
int main (void)
{
HASH_NODE* nodeptr = malloc(sizeof(HASH_NODE));
nodeptr->next = NULL;
nodeptr->word = NULL;
char* word = "cat";
foo(nodeptr->word, word);
}
我做错了什么?
最佳答案
您正在覆盖通过 malloc 传递给 foo()
的指针 destptr
。将指针从 main()
传递到 foo()
:
void foo(char** destptr, const char* srcptr)
{
*destptr = malloc(strlen(srcptr)+1);
strcpy(*destptr, srcptr);
}
并调用为:
foo(&nodeptr->word, word);
关于c - C 中的结构字符串字段作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029938/