• BU AAOS lab2


    1. exercise2.1关键在于对双重指针的理解,在花了很长时间搞懂后,作图如下

      LIST_INSERT_BEFORE为例,给插入前listelm的前一个元素命名为before

      规定每个”元素“用一个大矩形框表示,每个矩形框划分为两部分。一部分“标题框”表示“地址”,另一部分表示“内容”

      • 如下图,是插入前的图示

      • 宏函数第一行(elm)->field.le_prev = (listelm)->field.le_prev;

        listelmprev赋给elmprev,也就是说让elmprev值等于beforenext地址

      • 第二行LIST_NEXT((elm), field) = (listelm);

        最易理解的一步,elm的next指针指向listelm

      • 第三行*(listelm)->field.le_prev = (elm);

        一步一步解析,listelmprevbeforenext的地址,那么给这个东西做 ***** 运算,得到的等式左边的就是beforenext的“内容”(区别于地址)。因此这句话的意思就可以理解为让beforenext等于elm的地址,也可以说成让beforenext指向elm

      • 第四行(listelm)->field.le_prev = &LIST_NEXT((elm), field);

        这行代码左侧与上一行的区别就在于没有做 * 运算,因此等式左边就表示listelmprev。我们看前一张图可知,原先这个等于beforenext的地址,现在我们通过赋值把他更改为elmnext的地址。然后就大功告成啦~!

    lab1复习指针,lab2复习(预习)双重指针呜呜呜呜呜

  • 相关阅读:
    spring in action小结4.1
    spring in action小结3 运行时值注入
    python-__init__.py 与模块对象的关系
    Python-常用库扩展
    Qt-优化布局结构
    Python-文件修改器
    C语言-数据结构(一)
    Python-PyQt4学习笔记
    Python-PyQt4学习资料汇总
    Linux-查看C语言手册及man的特殊用法
  • 原文地址:https://www.cnblogs.com/hello-code/p/12563219.html
Copyright © 2020-2023  润新知