Why are structures typedef'ed to their own names? [duplicate]
在定义结构体时,会出现定义名字和结构体名字一样
struct LNode { //单链表存储结构表示
ElemType data;
struct LNode * next;
};
在c语言里面如果这样定义LNode,则每次定义LNode都要在前面加上struct
但是如果使用typedef,就相当于定义了一种类型
typedef struct LNode { //单链表存储结构表示
ElemType data;
struct LNode * next;
} LNode, * LinkList;
这样定义时可以直接像使用int一样使用LNode, 而定义的结构体的名字是LNode,而后面又定义了一个LNode,这样写可以
还可以直接去掉第一个LNode
typedef struct { //单链表存储结构表示
ElemType data;
struct LNode * next;
} LNode, * LinkList;
而在C++中没有这个问题,直接使用struct就可以了,不用typedef
本文解释了在C语言中为何选择结构体typedef并使用相同名称的原因,通过对比C和C++中结构体定义的区别,展示了typedef在简化结构体引用上的优势,并提供了在C++中直接使用struct而不使用typedef的示例。
3840

被折叠的 条评论
为什么被折叠?



