我有以下结构:
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));
...
}
关于c - 初始化包含指向数组的指针的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629185/