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