韦东山RTOS训练营课堂笔记三


  • 数组
    1. 优点:可随机访问、速度快
    2. 缺点:需要足够的连续空间,空间固定,插入删除麻烦
    3. 使用场景:需要快速访问,不需要频繁的插入和删除元素
  • 链表
    1. 优点:空间利用率高,空间可调,插入删除方便
    2. 缺点:需要遍历,查找速度低,不能随机访问
    3. 使用场景:不需要快速访问,需要频繁的插入和删除元素
  • 链表结构图

               

  •  代码示例

  • 课后心得
    1. 关键字static的作用

      (1)在函数体内:一个被声明为静态的变量,在这一函数被调用过程中,维持其值不变。(该变量值初始化一次)

      (2)在模块内,函数体外:一个被声明为静态的变量,可以被模块内所用函数访问,但不能被模块外其他函数访问。

      (3)在模块内,一个被声明为静态的函数,该函数只能被这一模块内其他函数调用,其他模块无法调用。

    2. 引用与指针的区别:

      (1)引用必须初始化,指针不用

      (2)引用初始化后不能修改,指针可以改变所指对象

      (3)不存在指向空的引用,指针存在空值

      指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。

      引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

    3. h头文件中的#ifndef/#define/#endif作用:

      防止头文件被重复引用

    4. #include <>与#include “”区别:

      <>是从系统指定的路径下寻找;””是先从当前路径下寻找

    5. 描述实时系统的基本特性:

      在特定时间内完成特定的任务,实时性与可靠性。

    6. 全局变量与局部变量是否存在区别?

      全局变量存在静态数据区,局部变量存在栈中

    7. 堆栈溢出一般是由于什么原因?

      (1)没有回收垃圾资源

      (2)层次太深的递归调用

    8. 队列与栈的区别:

      队列:先进先出;栈:先进后出

    9. 局部变量是否能和全局变量重名?

      可以。局部变量会屏蔽全局变量。若要使用全局变量,使用::。

      在函数内引用该重名变量时,会使用同名的局部变量,而不会使用全局变量(就近原则)。

      对一些编译器而言,同一函数内可以定义多个同名的局部变量,例如:在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在该循环内。

    10. 如果引用一个已经定义过的全局变量?

      可以包含其头文件,也可使用关键字extern。

      引用头文件:通过引用头文件的方式来引用某个头文件中声明的变量,假如将该变量写错了,在编译阶段会报错。

      Extern:通过extern的方式引用,若将变量写错,编译阶段编译器不会报错,在链接阶段会进行报错提示。

    11. 全局变量能不能定义在可被多个.c文件包含的头文件中?

      可以。在不同的C文件中以static的形式来声明同名全局变量。

      可以在不同的C文件中声明同名的全局变量,前提是只能在一个C文件中对变量赋初值,此时链接不会报错。

  • 要点
    1. 结点的next指向的下一个结点,而非下一结点的next。如果是单链表,最后的一个结点的next指向NULL
    2. 变量变量就是可读可写,可读可写一定在内存里
    3. ROM的起始地址:0X0800 0000 大小:0X8000  512KB
    4. RAM的起始地址:0X2000 0000 大小:0X1000  64KB

相关