zoukankan      html  css  js  c++  java
  • 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复习(预习)双重指针呜呜呜呜呜

  • 相关阅读:
    PHP数据类型
    Windows定时备份Mysql数据库
    Linux定时删除n天前日志
    使用file_get_contents() 发送GET、POST请求
    使用Git工具批量拉取代码
    Git常用命令
    点击开关按钮,通过改变类名切换按钮
    两个行内元素的间隙问题
    vue和angular双向数据绑定原理
    原生js实现 双向数据绑定
  • 原文地址:https://www.cnblogs.com/hello-code/p/12563219.html
Copyright © 2011-2022 走看看