当前位置:  技术问答>linux和unix

关于一些结构中的指针的使用疑惑

    来源: 互联网  发布时间:2016-02-13

    本文导语:  阅读了一些驱动源代码,对其中一些指针的使用总是感觉很不习惯..比如 a->bb = b; b->aa = a;总是能看到累世这样的互相指来指去的代码..一直弄不明白这样做的原因..不知道这算是一种约定呢还是有什么特别的地方.....

阅读了一些驱动源代码,对其中一些指针的使用总是感觉很不习惯..比如 a->bb = b; b->aa = a;总是能看到累世这样的互相指来指去的代码..一直弄不明白这样做的原因..不知道这算是一种约定呢还是有什么特别的地方..希望坛子里的高手能指点迷津..几乎每个函数里面都在互相指来指去的......but why????

|
简单的说是这类指针是为了提高效率,相互指来指去那是链表的一种具体表现,方便知道a就可以快速的找到b,反之依然;其它的由楼下的高手解说:)

|
个人觉得内核开发者只注重效率,绝大部分代码遵守linux的编码风格外..如果楼主不能改变,那么坚持下就习惯了:)

|
典型的双向链表,搜索方便,链接方便。

|
这是由操作系统的需求所产生的,为了提高效率,主要是为了满足在搜索查找时的方便而设,举个例子:
在内存管理上面,一个物理内存页被映射成虚拟内存,而且还要用于共享,那么有两方面的需求,一方面是从虚拟内存地址查找物理地址,另一方面是由物理地址查找出共享此物理页面的所有虚拟地址,那么请问LZ,不用这种互指的办法是用什么??在内核中类似于这种需求有很多

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 三层结构很简单,但怎么正确使用请高手指点!!!!谢谢
  • 两种不同的Linux能不能使用同一套分区结构进行安装?
  • 作CRM现在使用什么开发工具比较方便?采用什么结构?
  • ORACEL使用脚本来修改表结构
  • “堆”和“栈”是有区别的数据结构,为什么很多书中都将它们放在一起使用呢?
  • ORACLE 修改表结构 之ALTER CONSTAINTS的使用
  • 有谁知道如何,使用java做可以显示磁盘目录结构的选择对话框,
  • 使用TCP协议通讯,如果有很多种数据要传输,如:注册信息等,在C++中,我们可以使用结构,java中通常大家又是如何打包的呢?
  • 使用java写c/s结构的程序可以触到操作系统的低层么?欢迎讨论!!
  • SQL Server 索引结构及其使用(一)--深入浅出理解索引结构第1/4页
  • 寻找结构--FILE,以及使用man的技巧
  • 想实现B/S结构的应用,使用Applet和Servlet通讯,还是使用RMI技术比较好?
  • B/S结构的ERP系统是使用J2EE和.NET的架构哪个比较好?
  • java文档说TreeMap使用的储存结构是Red-Black树,请问什么是Red-Black树,和Btree一样吗?
  • c语言中位字段与结构联合的组合使用详解
  • C#中使用反射获取结构体实例及思路
  • 在LINUX下用C编程有可以直接使用的“队列”数据结构吗?
  • 为什么在 db.pc 文件中不能使用时间数据结构 time_t ?
  • 求助:在java中如何使用象C中struct的数据结构???
  • java使用泛型实现栈结构示例分享
  • <<大话数据结构>>中冒泡排序算法改进
  • 请问:在用proc方式往数据库插入数据时,我能不能定义一个结构体,它与表的每一项对应,将结构体赋好值后,再只将这个结构体插入表中,这行不行啊?
  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • 《arm体系结构结构与编程》书如何
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • file结构和inode结构
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • 《莱昂氏UNIX源代码分析》中有一种结构体声明没有结构体名
  • mysql 命令大全及导入导出表结构或数据
  • 关于学籍管理系统B/S结构实现的结构问题
  • GCC 编译问题: 结构A中有个成员结构B??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3