2020.02.07

花了挺长时间分析了下 rtthread 里面的双向循环链表代码实现(看workqueue 源码来着),最开始不知道是循环链表,所以看到节点前后指针都指向自己很晕。画了画图搞明白了是首尾相连的循环链表。

要点1:画图是很直观的方式

要点2:指针变量作为左值,是要改变这个指针变量的值,而不是代表某个节点地址;指针变量作为右值才是代表某个节点的地址

还有,链表链表,操作的都是地址,而不是实体。

2020.02.14

一边看电视剧一边想二级指针删除链表节点的问题。感觉还是有点绕。

不过,发现节点next指针作为左值和作为右值是完全不同的概念:

next指针作为左值:表示节点的next指针这个结构体元素。

next指针作为右值:表示下一个节点的内存地址

强调下,链表中保存的是next指针,→next操作得到的是指针,并不是结构体实体。

2020.02.16

linus TED采访:The mind behind Linux

提到了好的代码“taste”是什么,举例是用next指针(这个结构体元素)的指针删除链表节点。