为了账号安全,请及时绑定邮箱和手机立即绑定

在使用这种结构体类型的时候却不用在LinkList前加*号,这是怎么回事?

在使用这种结构体类型的时候却不用在LinkList前加*号,这是怎么回事?

猛跑小猪 2022-08-05 18:14:24
定义节点如下:typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList; //线性链表类型创建链表时用以下函数,内容省略。Status CreateList_L(LinkList *L,int n);mian函数内容:LNode *L1;CreateList_L(&L1,5);我的问题就是在使用CreateList_L函数创建链表时,它的参数是LInkList *类型的,为什么不是*LinkList *类型的。我认为typedef的时候是将整个结点结构体重命名为*LinkList
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

Status CreateList_L(LinkList *L,int n);
因为LinkList <=> LNode *,转换一下就明白了,LNode **L,这说明L是一个指向指针的指针。例如:int *p=4;**q; q=&p;其中指针p指向存储4的地址,由于指针也是变量,在内存中也是有存储地址的,指针q则指向指针变量p的存储地址。而是用结构体时是直接是用头指针,所以不需要加*号,这样你应该能明白了吧。

查看完整回答
反对 回复 2022-08-08
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

这个定义你这么看
typedef (struct LNode *) LinkList;
意思就是 LinkList 本身就是一个指向struct LNode 指针
比方说你定义了一个char * p;它是(char *) p,p是指向char 的指针,你之后用P的时候不会再在它的前面加一个* 吧?

查看完整回答
反对 回复 2022-08-08
  • 2 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信