C结构解析问题

C结构解析问题,c,struct,binary-tree,C,Struct,Binary Tree,我正在学习C语言的结构,并尝试制作一个二叉树。下面是树结构: struct BinaryTree { int data; struct BinaryTree *left; struct BinaryTree *right; }; typedef struct BinaryTree BinaryTree; void addTreeNode(int element, BinaryTree *tree); int main(int argc, const char * ar

我正在学习C语言的结构,并尝试制作一个二叉树。下面是树结构:

struct BinaryTree
{
    int data;
    struct BinaryTree *left;
    struct BinaryTree *right;
};
typedef struct BinaryTree BinaryTree;

void addTreeNode(int element, BinaryTree *tree);

int main(int argc, const char * argv[])
{
    BinaryTree tree;
    addTreeNode(2, &tree);
    return 0;
}
现在我不明白的是:

void addTreeNode(int element, BinaryTree *tree)
{
    *tree = {element, NULL, NULL};
}

我现在不想在这个函数中做任何有用的事情,但我不明白为什么在这一行中会出现解析问题。据我所知,我取一个指向树的指针,取消引用并初始化它。为什么会出现编译错误?

一般情况下,ANSI C结构实例只能在声明时使用列表进行初始化,例如

BinaryTree={element,NULL,NULL}

会有用的,但不是像你尝试的那样在事后


有关详细信息,请参阅一般情况下ANSI C结构实例只能在声明时使用列表进行初始化,例如

BinaryTree={element,NULL,NULL}

会有用的,但不是像你尝试的那样在事后


有关详细信息,请参见

,您可以使用以下方法解决此特定问题:

void addTreeNode(int element, BinaryTree *tree)
{
    tree->data = element;
    tree->left = NULL;
    tree->right = NULL;
}

您可以使用以下方法解决此特定问题:

void addTreeNode(int element, BinaryTree *tree)
{
    tree->data = element;
    tree->left = NULL;
    tree->right = NULL;
}

*tree={element,NULL,NULL}创建的synthax
称为聚合初始值设定项,不允许用于赋值

使用应使用显式初始化:

tree->data = element;
tree->left = NULL;
tree->right = NULL;

*tree={element,NULL,NULL}创建的synthax
称为聚合初始值设定项,不允许用于赋值

使用应使用显式初始化:

tree->data = element;
tree->left = NULL;
tree->right = NULL;

您可能希望将打印到问题中的实际错误添加到问题中。这不是初始化,而是赋值。错误:prog.c:35:13:error:expression*tree={element,NULL,NULL};代码实际上并没有向树中添加节点,它只是初始化当前节点。添加节点需要malloc,将已传递注释中的右项设置为指向新节点,将新节点中的左项设置为指向已传递节点,将值项设置为值项,并将右项设置为NULL。您可能希望将打印到问题中的实际错误添加到问题中。这不是初始化,它是赋值。错误:prog.c:35:13:Error:expression*tree={element,NULL,NULL};代码实际上并没有向树中添加节点,它只是初始化当前节点。要添加节点,需要malloc,将已传递注释中的右条目设置为指向新节点,将新节点中的左条目设置为指向已传递节点,将值条目设置为value,并将右条目设置为NULL。