结构体,求解释不同

typedef struct BiTNode //这个
{
int data; // 结点的值
BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode;
struct BiTNode 和这个有啥不同
{
int data; // 结点的值
BiTNode *lchild,*rchild; // 左右孩子指针
};
==============================
另外,,可以的话,,解释一下
typedef struct BiTNode
{
int data; // 结点的值
BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode,*BiTree; //这后面两个是什么

第1个回答  2012-05-18
上面那个第一个结构体在声明一个名为‘BiTNode’结构体的同时定义了一个名为‘BiTNode’的结构体变量,类似于int i,只不过int是编译器自带的一种变量类型;第二个结构体如果加上:typedef BiTNode BiTNode;就和第一个一样了。
第二个问题其实在第一问已经解决了,就是自定义类型后定义的两个结构体变量。
第2个回答  2012-05-18
typedef 用于设置类型的别称
比如typedef int integer
这样以后用integer a与int a是一个意思
你的第一种情况是声明一个结构体,这个好理解
第二种情况不但声明了结构体,还将这种结构体类型设置别称为BiTNode
如果别称为*BiTree,则使用BiTree bt定以后,bt为该结构体的指针
等同于BiTNode *bt本回答被提问者采纳
第3个回答  2012-05-18
对于ANSI C来说, 必须使用第一种
对于C++来说, 两种写法都一样
=====
BiTNode 是这个struct的类型
BiTree 则是这个struct类型的指针
相似回答