请教一个C语言结构体问题

1 typedef struct node
2 {
3 int data;
4 struct node *next;
5 }LNode,*LNodeLink;
第4行为什么可以用struct node?node不就是代表struct的吗?
第5行中LNode,*LNodeLink为什么是变量类型,而不是变量?

在C语言中, 声明结构体必须要带关键字struct;
而 typedef struct node{....}LNode, *LNodeLink;
是将LNode 定义为 struct node 的别名, 可以用它定义结构体
是将LNodeLink 定义为 struct node * 的别名, 可以用它定义结构体指针追问

struct node是一个整体?

追答

使用typedef时是一个整体

追问

struct node是什么 node又不是关键字

追答

struct 为关键字, 在C语言中,你需要加struct 来定义 ,是说明node 是结构体类型而不是普通类型

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-08
1、用struct node而不是node,是因为这个结构体的定义还没有结束,你还在这个结构体里面定义这个类型,即递归定义。所以直接用node肯定会出现编译错误,得用struct node

2、LNode,*LNodeLink是类型,这是因为typedef的使用,typedef = type define,意思是类型定义,懂了吧?比如typedef int INT,那么int和INT都可以代表整型。追问

LNode其实就是代表struct node对吧 那么struct node是什么意思呢

追答

struct是定义结构体的关键字,而在这个结构体还没定义完毕之前,你又要用这个结构体来定义*next,即struct node *next;这一句,这是语法,必须这样,我知道你是想直接node *next;对吧,但是这样是错误的,因为node这结构体还没有定义完毕,到这一句 5 }LNode,*LNodeLink;才算定义完。不加struct你编译肯定会出错的。

第2个回答  2014-10-08
这是一个典型的链表结构体,next指针可以开辟空间当结构体变量用 这样就可以串起来

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网