关于链表和“->”符号的一点思考

常规单链表的实现方式是定义一个结构体,结构体中定义一个存放数据的变量和一个指向下一个节点的指针,在初次接触链表时,接触到了一个符号“->”,笔者在学习时,最开始常常把它和“.”傻傻分不清楚,对于这种状况,首先要搞清楚一点,结构体也是数据类型的一种,跟“int”"char"一样,定义一个结构体后结构体中的变量也就可以被这个结构体定义的变量访问.结构体的作用即对一个东西进行封装,封装之后方便以后使用,使用了这个类型的变量都会具有这个结构的属性。

其实结构体变量访问结构体元素,例如a.b,那么当a是指针变量时,a->b等价为(&a).b。如果用“.”,只需要声明一个结构体,然后用结构体名加“.”加域名就可以引用域了,因为计算机自动分配了结构体的内存,就像int a一样,(操作栈内存)

用->的话必须声明一个结构体的指针,还要手动开启一个该结构体的内存,将返回的指针给声明的结构体指针才能用->正确引用,否则内存中只分配了指针的内存,没有分配结构体的内存,想要的结构体实际上不存在,这时候用->引用自然会出错,因为没有结构体,所以也不存在结构体域。(操作堆内存)

“.”可以读作“的”“->”可以读作“指向结构体的”

补充:“->”与“.”功能一样,都是访问结构体变量,但箭头绝对没有现实生活中箭头的指向作用,它只表示用一个指针访问结构体变量,链表中节点的链接过程跟“->”没有关系,链表节点的链接是通过指针指向链接的,编程中表现为给指针变量赋值,实质是把后一个节点的首地址赋给前一个节点的pNext,箭头非指向,不注意这点会对理解链表产生困扰。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值