[PIC®/AVR®/dsPIC®产品] 如何定义一个指向自己的指针?

[复制链接]
3086|24
yiyigirl2014 发表于 2026-4-28 16:01 | 显示全部楼层
你问的这个问题,是链表最核心、最容易困惑的点—— 明明节点类型是自己,还包含一个指向自己的指针,这在语法和内存上到底是怎么实现的?
小明的同学 发表于 2026-4-29 10:14 | 显示全部楼层
结构体自引用(最常用,比如链表节点):结构体里包含指向自身类型的指针
普通变量指向自己:指针变量存储自身的内存地址
天灵灵地灵灵 发表于 2026-5-1 16:53 | 显示全部楼层
你问的这个问题,是链表最核心、最容易困惑的点—— 明明定义一个节点类型,节点里却要包含「指向自己这个类型」的指针,这看起来像 “套娃”,编译器是怎么识别并实现的?
小岛西岸来信 发表于 2026-5-3 14:06 | 显示全部楼层
定义指向自身的指针,核心是结构体自引用:先声明结构体类型,再包含同类型指针成员。例:struct Node { struct Node* next; };next 指针指向同类型结构体实例,形成链表。普通变量无法直接自指,必须通过结构体实现,这是 C 语言通用用法,适用于 51/STM32/PIC/AVR 所有单片机。
598330983 发表于 2026-5-4 10:31 | 显示全部楼层
链表节点里存的是指针(地址),不是实体节点
指针大小固定,编译器不需要知道结构体完整内容就能编译
不用指针就会无限套娃,编译失败
链表就是节点 + 指针串联
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0