![](/img/trans.png)
[英]Static structure initialization with a pointer to array of pointers member
[英]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.