结构体
typedef struct LNode{
ElemType data; //结点的数据域
struct LNode *next; //结点的指针域
}LNode,*LinkList; LNode和*LinkList都是结构体的名字吗?有什么不同呢?或者说用法有什么不一样呢?小白求助,网上也没找到{:10_250:} LNode指的是这个结构体,LNode = struct LNode,只要用到 struct LNode的地方都可以用LNode代替
*LinkLis是指向该结构体的指针,这个是个指针,用法就和普通指针的指法差不多,就是要读写结构体里面成员时用->或者.来读取
明白了就点下“最佳答案”,不明白点“回复”再问 LNode和*LinkList都是数据类型。可以用LNode和LinkList来定义变量,如
LNode a; //定义实体
LinkList p1; //p1为指向该结构体的指针
可参考:http://blog.csdn.net/wangqiulin123456/article/details/8284939 丶忘却的年少o 发表于 2017-10-6 18:45
LNode指的是这个结构体,LNode = struct LNode,只要用到 struct LNode的地方都可以用LNode代替
*LinkLis ...
*LinkList这个指针也是结构体的名字吗?和LNode一样都能代表同一个结构体(虽然用法不同)?{:10_254:} 月满霜华 发表于 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 就可以了。
丶忘却的年少o 发表于 2017-10-6 22:43
不对,一个是指针,一个是类型。
你想下你定义的指针,int *p是定义一个int类型的指针p,那LinkList p就 ...
我知道LNode是一个类型(别名)的。如果LinkList不是类型,怎么能像LinkList p这样去定义一个变量呢?就像int *m中m是个指针,本身就是个(指针)变量,不可能自己再去用m定义个别的变量吧{:10_266:} 月满霜华 发表于 2017-10-6 22:57
我知道LNode是一个类型(别名)的。如果LinkList不是类型,怎么能像LinkList p这样去定义一个变量呢?就像in ...
你的理解方法我看不懂。不知道怎么给你解释
LinkList的原型是 typedef struct LNode *LinkList,就是给数据类型指针取个别名,就是以后这个数据类型的指针都可以叫LinkList,就像C语言规定int *一样,只有规定了,你才能去用int *去声明一个整形的指针。同样的,你要是要用这个结构体类型的指针,以往都是struct LNode *k,但是因为你取了别名,就可以LinkList k,这个意思 你这样说我瞬间就懂了@、忘却的年少。 围观学习~
页:
[1]