结构定义末尾的变量名是什么意思?

时间:2019-01-10 22:38:45

标签: c

假设我有这个定义:

typedef struct tnode *Tnodep;
typedef struct tnode
{
    int contents; /* contents of the node */
    Tnodep left, right; /* left and right children */
}Tnode;

最后一个Tnode是什么意思?这个定义和这个定义有什么区别?

typedef struct tnode *Tnodep;
typedef struct tnode
{
    int contents; /* contents of the node */
    Tnodep left, right; /* left and right children */
};

1 个答案:

答案 0 :(得分:1)

第一个定义定义了一个结构tnode,以及两个类型名称Tnodep和Tnode。第二个未定义类型名称Tnode。

使用第一个定义,然后可以定义以下两个之一:

Tnode x;
tnode y;

使用第二个定义,您不能。你只能写

struct tnode x;