gpt4 book ai didi

c - C 中的结构字符串字段作为函数参数

转载 作者:行者123 更新时间:2023-12-02 17:35:45 25 4
gpt4 key购买 nike

我有一个结构

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com