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

时间:2016-09-22 02:12:39

标签: c pointers struct

我有以下结构:

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类型的指针,我不能通过括号表示法访问它的值吗? (我也试过去引用它,它没有编译)

1 个答案:

答案 0 :(得分:2)

你做的一切都正确,除了这一行

current_node = malloc(sizeof(TRIE_NODE));

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

要解决此问题,请将指针传递给指针,并使用间接运算符进行分配:

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