鱼C论坛

 找回密码
 立即注册
查看: 1708|回复: 8

[已解决]结构体

[复制链接]
发表于 2017-10-6 18:36:54 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
typedef struct LNode
{
        ElemType data;                //结点的数据域
        struct LNode *next;           //结点的指针域
}LNode,*LinkList;                                               LNode和*LinkList都是结构体的名字吗?有什么不同呢?或者说用法有什么不一样呢?小白求助,网上也没找到
最佳答案
2017-10-7 10:25:53
月满霜华 发表于 2017-10-6 22:57
我知道LNode是一个类型(别名)的。如果LinkList不是类型,怎么能像LinkList p这样去定义一个变量呢?就像in ...

你的理解方法我看不懂。不知道怎么给你解释
LinkList的原型是 typedef struct LNode *LinkList,就是给数据类型指针取个别名,就是以后这个数据类型的指针都可以叫LinkList,就像C语言规定int *一样,只有规定了,你才能去用int *去声明一个整形的指针。同样的,你要是要用这个结构体类型的指针,以往都是struct LNode *k,但是因为你取了别名,就可以LinkList k,这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-6 18:45:59 | 显示全部楼层
LNode指的是这个结构体,LNode = struct LNode,只要用到 struct LNode的地方都可以用LNode代替
*LinkLis是指向该结构体的指针,这个是个指针,用法就和普通指针的指法差不多,就是要读写结构体里面成员时用->或者.来读取
明白了就点下“最佳答案”,不明白点“回复”再问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-6 20:20:45 | 显示全部楼层
LNode和*LinkList都是数据类型。可以用LNode和LinkList来定义变量,如

LNode a;     //定义实体
LinkList p1;   //p1为指向该结构体的指针


可参考:http://blog.csdn.net/wangqiulin123456/article/details/8284939
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-6 22:33:49 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-10-6 18:45
LNode指的是这个结构体,LNode = struct LNode,只要用到 struct LNode的地方都可以用LNode代替
*LinkLis ...

*LinkList这个指针也是结构体的名字吗?和LNode一样都能代表同一个结构体(虽然用法不同)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-6 22:43:31 | 显示全部楼层
月满霜华 发表于 2017-10-6 22:33
*LinkList这个指针也是结构体的名字吗?和LNode一样都能代表同一个结构体(虽然用法不同)?

不对,一个是指针,一个是类型。
你想下你定义的指针,int *p是定义一个int类型的指针p,那LinkList p就是定义一个struct LNode类型的指针,就是指向的类型是这个数据结构类型。
比如你定义一个整形,是不是int k,int就是类型。LNode就是该结构体类型的意思,你要是不取别名,那你定义一个该结构体类型k,就要写struct LNode k,无形中就增加了很多的代码量,而取了别名直接就 LNode k 就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-6 22:57:27 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-10-6 22:43
不对,一个是指针,一个是类型。
你想下你定义的指针,int *p是定义一个int类型的指针p,那LinkList p就 ...

我知道LNode是一个类型(别名)的。如果LinkList不是类型,怎么能像LinkList p这样去定义一个变量呢?就像int *m中m是个指针,本身就是个(指针)变量,不可能自己再去用m定义个别的变量吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-7 10:25:53 | 显示全部楼层    本楼为最佳答案   
月满霜华 发表于 2017-10-6 22:57
我知道LNode是一个类型(别名)的。如果LinkList不是类型,怎么能像LinkList p这样去定义一个变量呢?就像in ...

你的理解方法我看不懂。不知道怎么给你解释
LinkList的原型是 typedef struct LNode *LinkList,就是给数据类型指针取个别名,就是以后这个数据类型的指针都可以叫LinkList,就像C语言规定int *一样,只有规定了,你才能去用int *去声明一个整形的指针。同样的,你要是要用这个结构体类型的指针,以往都是struct LNode *k,但是因为你取了别名,就可以LinkList k,这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-7 12:20:39 From FishC Mobile | 显示全部楼层
你这样说我瞬间就懂了@、忘却的年少。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-7 14:27:25 | 显示全部楼层
围观学习~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表