繁体   English   中英

包含指向数组的指针的结构的初始化

[英]Initialization of a structure that contains a pointer to an array

我有以下结构:

typedef struct TRIE_NODE
{
    char* word;
    struct TRIE_NODE* node[26];
}TRIE_NODE;

我创建一个名为head的节点, TRIE_NODE *head = NULL; ,然后尝试使用以下函数初始化此节点:

void initialize_node(TRIE_NODE *current_node)
{
    int MAX = 25;

    current_node = malloc(sizeof(TRIE_NODE));

    for(int i = 0; i < MAX; i++)
    {
        current_node->node[i] = NULL;
        if(current_node->node[i] == NULL)
            printf("\n -- \n");
    }
}

但是,每当我尝试读取current_node->node[i]时,都会遇到分段错误。 有谁知道发生了什么吗? 考虑到current_node->node是一个指针,它指向另一个TRIE_NODE类型的指针,我是否应该能够通过括号表示法访问它的值? (我也尝试过取消引用它,它无法编译)

您可以正确执行所有操作,但此行除外

current_node = malloc(sizeof(TRIE_NODE));

修改了current_node的本地副本。 调用方中的指针保持不变。

要解决此问题,请将指针传递给指针,然后使用间接运算符赋值:

void initialize_node(TRIE_NODE **current_node_ptr) {
    ...
    *current_node_ptr = malloc(sizeof(TRIE_NODE));
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM