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

标签 c pointers struct function-parameter

我有一个结构

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/

相关文章:

c - 如何修复应该由 #ifdef 之间的预处理器指令排除的编译器错误?

c++ - 用于创建多边形的 C/C++ PNG 库

c# - .Net 中 C# 指针的使用

c++ - 从 VBA 访问 C++ 中的嵌套结构

c - 用里面的结构类型初始化一个结构

C 变量在初始化其他变量后变化

c - 声明如何影响逗号运算符?

c - 使用交替的最小值和最大值对数组进行排序

C++ 问题 : pointers/memory addresses and subclasses

c - 在 C 中使用 char** 时出现运行时错误 "load of null pointer of type char"