首页 > 其他 > 详细

内核链表

时间:2015-11-25 00:23:20      阅读:216      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!