【发布时间】:2013-02-24 15:53:08
【问题描述】:
我的头文件中有以下内容
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);
【问题讨论】:
-
将 sizeof(TreeNode*) 替换为 sizeof(TreeNode) 因为指针的大小不是结构本身的大小
-
typedef struct tree_node* TreeNode;不是个好主意。它隐藏了TreeNode实际上是一个指针的事实。让TreeNode成为struct tree_node的别名并改用TreeNode*。 -
你真的想要一个 TreeNodes 数组(换句话说,指针)还是一个 tree_node 结构数组?
-
我完全同意 LihO,帮自己和其他人一个忙,使用
typedef struct tree_node TreeNode; ... TreeNode *parent; ...。 -
@Liho 你说得对,我应该把 typedef 改成 struct 而不是 struct pointer。