typedef struct指针数组

时间:2013-02-24 15:53:09

标签: c pointers struct typedef

我的头文件中有以下内容

typedef struct tree_node* TreeNode;

struct tree_node{

    int value;
    void *data;

    TreeNode parent;
    TreeNode left;
    TreeNode right;

};

要创建一个treenode,我正在关注

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);

1 个答案:

答案 0 :(得分:0)

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

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

查看VLA(可变长度数组)