一个关于结构体的疑问?

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:14:44
typedef struct BiTNode
{TElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode;
typedef struct BiTNode中BiTNode,中间的BiTNode和最下面的BiTNode有什么区别?哪个是结构体名,哪个是成员?定义一个结构体变量用哪个?

这样写也是对的:原文的第一个BiTNode可省略,也可换成任一个,例 SBD;
typedef struct SBD
{TElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode;

BiTNode是一个自定义类型,而这个类型中又有自身的类型。
再看:
typedef int INTER;

INTER a=0;
就相当于
int a+0;

所以 BiTNode node;
就相当于 struct SBD node;

node就是上面结构体的一个对象!

BiTNode是结构体名
里面的是成员

truct BiTNode *lchild,是把lchild申名为指向BiTNode的指针,即结构体里有一个数据,两个指针,而这两个指针又会指向结构体型

typedef struct BiTNode是C中的定义形式
typedef struct BiTNode中BiTNode,中间的BiTNode和最下面的BiTNode没有区别
在C++中可以这样直接定义结构体
struct BiTNode
{
TElemType data;
struct BiTNode *lchild, *rchild;
}
其中BiTNode就是结构体的名字,data,lchild,rchild是结构体的成员
可以直接用BitNode定义结构体变量

第一个是建立的一个新的结构体数据类型;
第二个是成员名
第三个是你要建立的结构体名