码迷,mamicode.com
首页 > 其他好文 > 详细

内核链表

时间:2015-11-25 00:26:01      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:


能不能一种链表中链接不同的类型呢,相应这种号召,内核链表诞生了。

内核链表之所以能够链接不同的类型的数据,是因为它和普通链表不一样,它链接的不是数据结构的起始地址,而是链接的该数据结构中的的list_head属性。

技术分享 

下面是比较重要的函数:

技术分享 

 

其他的都很简单,专门介绍一下list_entry函数:

技术分享 

技术分享 

函数最后返回的是这个结构体节点起始地址。Ptr是这个节点中list_head属性的地址,type是这个结构体节点的真实类型,member是这个结点中list_head属性的名字。

其中typeof关键字调用 0->member而没有出错,个人认为这是因为typeof并不对表达式求值,只是利用了其类型,所以不会出错。

 

可以使用如下方式调用:

Struct list_head * pos;

Struct student *tmp;

Tmp = list_entry(pos,struct list_head,pointer);

 

下面是一段标准使用代码:

技术分享 

 

 





内核链表

标签:

原文地址:http://www.cnblogs.com/dchipnau/p/4993316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!