typedef struct的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:09:54
typedef struct LNode
{
ElemType data;
LNode *next;
}*Link,*Position;
在以上结构体中 LNode为结构体名 之后的*Link 和 *Position
Link是否用于定义变量类型为结构体指针变量 ?那之后的*Position也是跟它的作用一样? 如果是一样的为什么要定义两个 ? Position好象在后面的应用中是定义函数的类型 请问为什么这样用?

typedef 是定义类或者结构体的别名。Link 和 Position 实际上是结构体LNode的指针类型。在标准C中,定义一个结构体变量形式是struct LNode Node;struct LNode* pNode;在C++中可以不加struct用了typedef重新定义两个别名用起来方便,且逻辑清晰

都是struct LNode*类型,作用是一样的,定义两个是为了方便,因为相同的类型可能表示具体的意义不一样,比如说某一个struct LNode*表示头节点的话它就用来表示一个链表,而其他的struct LNode就是一个普通的节点,这时就可以用Link和Position以示区别。

主要是个人书写为了区分开而已,一样。*Link就知道是链表结点啊,*Position就感性上知道这是函数返回的某个位置的结点啊,一样,你不信可以全改成一种试试。