结构体的类型重定义问题?

img


能讲一下这张图片里面的代码是什么意思啊,不理解这个typedef和结构体末尾的 Lnode 和 *LinkList是什么意思

img


这张图片前面没有 typedef ,结构体末尾的 ren 和 liu 代表在创建了结构体or的同时同事创建了两个结构体变量ren 和 liu

img


我又搜了搜类型重定义的定义是为已有类型重新定义创建别名,这张图片上为结构体创建了一个名字Point

那么第一张图片上是啥意思呢,在开头的时候即声明了一个结构体叫做Lnode,为啥末尾又把他改成了同样的名字Lnode?,,还有如果struct 声明了一个结构体Lnode,那么结构体末尾不应该是创建两个结构体类型的变量吗?,我感觉很矛盾,能解释一下吗?

1、

LNode和*LinkList其实都是结构体struct LNode的别名,只不过类型不同。
LNode是一个普通的结构体名,相当于将结构体类型struct LNode重命名为LNode;
*LinkList是一个指针类型,相当于将struct LNode * 重命名为LinkList。

2、

C语言结构体中structtypedef struct区别为:声明不同、访问不同、重新定义不同。
一、声明不同
1structstruct可以直接使用结构体名字声明结构体。
2typedef structtypedef struct的为。修饰结构体,结构体有了别名,通过结构体别名声明结构体。
二、访问不同
1structstruct定义的结构体变量,可直接访问结构体成员。
2typedef structtypedef struct定义的结构体变量,不可直接访问结构体成员,必须显式的通过结构体变量来访问成员。

3、

Lnode 是结构体变量
结构体最后有几个结构体变量都可以,最后的变量意思是在定义结构体的同时,声明了几个变量。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632