一、内核链表
1、定义
是一个有头双向循环链表。相比与之前的单向链表与双向链表,它不再将存储的数据放在节点中;而将节点放在要存储的数据中,作为数据成员存在。
2、系统中宏
在系统中有两个宏可以处理内核链表。
①offsetof:获取结构体成员到首地址的偏移量;
②contianer-of:通过偏移量获取结构体首地址。
而我们要研究时不应用这两个宏,因此要得到结构体首地址,就得将节点放在结构体开头作为第一个成员存在。<结构体第一个成员首地址即为结构体的首地址>
3、函数指针与指针函数
(1)函数指针:指向指针函数的函数指针。
(函数写法:函数 返回值 函数名(形参表))
函数指针写法:返回值(*函数指针名)(形参表)
eg:
作为参数传递的函数指针为回调函数。
调用函数指针形式:函数指针(实参)。
eg:
(2)指针函数:返回值为指针性的函数。
返回值要求:①不能指向一个局部变量空间;
②可以为:malloc(堆)、全局变量、静态变量;
③返回值需要判空,避免出现断错。