gpt4 book ai didi

c - typedef 结构体指针数组

转载 作者:行者123 更新时间:2023-11-30 17:54:13 25 4
gpt4 key购买 nike

我的头文件中有以下内容

typedef struct tree_node* TreeNode;

struct tree_node{

int value;
void *data;

TreeNode parent;
TreeNode left;
TreeNode right;

};

要创建一个树节点,我正在执行以下操作

TreeNode createTreeNode(int value, void *data){

TreeNode node;

node = malloc(sizeof(TreeNode*));

if(node == NULL){
printf("TreeNode malloc failed!!\n");
exit(EXIT_FAILURE);
}


node->data = data;
node->value = value;
node->parent = NULL;
node->right = NULL;
node->left = NULL;

return node;

}

现在我想创建 TreeNodes 数组...我该怎么做?我在想以下内容

TreeNode *treeNodes;
treeNodes = malloc(26 * sizeof(TreeNode));

然后

treeNodes[a_number_between_0_to_25] = createTreeNode(intNodeValue, NULL);

最佳答案

node = malloc(sizeof(TreeNode*)); 只会分配 4 个字节(或 8 个字节,具体取决于指针的大小)。这是错误的。使用 sizeof(struct tree_node); ,否则最终会出现分段违规。

除此之外,您的代码看起来还不错。是的,这就是创建数组的方法。

同时研究 VLA(可变长度数组)

关于c - typedef 结构体指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com