韦东山RTOS训练营课堂笔记三
- 数组
- 优点:可随机访问、速度快
- 缺点:需要足够的连续空间,空间固定,插入删除麻烦
- 使用场景:需要快速访问,不需要频繁的插入和删除元素
- 链表
- 优点:空间利用率高,空间可调,插入删除方便
- 缺点:需要遍历,查找速度低,不能随机访问
- 使用场景:不需要快速访问,需要频繁的插入和删除元素
- 链表结构图
- 代码示例
- 课后心得
-
关键字static的作用
(1)在函数体内:一个被声明为静态的变量,在这一函数被调用过程中,维持其值不变。(该变量值初始化一次)
(2)在模块内,函数体外:一个被声明为静态的变量,可以被模块内所用函数访问,但不能被模块外其他函数访问。
(3)在模块内,一个被声明为静态的函数,该函数只能被这一模块内其他函数调用,其他模块无法调用。
-
引用与指针的区别:
(1)引用必须初始化,指针不用
(2)引用初始化后不能修改,指针可以改变所指对象
(3)不存在指向空的引用,指针存在空值
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。
引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
-
h头文件中的#ifndef/#define/#endif作用:
防止头文件被重复引用
-
#include <>与#include “”区别:
<>是从系统指定的路径下寻找;””是先从当前路径下寻找
-
描述实时系统的基本特性:
在特定时间内完成特定的任务,实时性与可靠性。
-
全局变量与局部变量是否存在区别?
全局变量存在静态数据区,局部变量存在栈中
-
堆栈溢出一般是由于什么原因?
(1)没有回收垃圾资源
(2)层次太深的递归调用
-
队列与栈的区别:
队列:先进先出;栈:先进后出
-
局部变量是否能和全局变量重名?
可以。局部变量会屏蔽全局变量。若要使用全局变量,使用::。
在函数内引用该重名变量时,会使用同名的局部变量,而不会使用全局变量(就近原则)。
对一些编译器而言,同一函数内可以定义多个同名的局部变量,例如:在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在该循环内。
-
如果引用一个已经定义过的全局变量?
可以包含其头文件,也可使用关键字extern。
引用头文件:通过引用头文件的方式来引用某个头文件中声明的变量,假如将该变量写错了,在编译阶段会报错。
Extern:通过extern的方式引用,若将变量写错,编译阶段编译器不会报错,在链接阶段会进行报错提示。
-
全局变量能不能定义在可被多个.c文件包含的头文件中?
可以。在不同的C文件中以static的形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是只能在一个C文件中对变量赋初值,此时链接不会报错。
-
- 要点
- 结点的next指向的下一个结点,而非下一结点的next。如果是单链表,最后的一个结点的next指向NULL
- 变量变量就是可读可写,可读可写一定在内存里
- ROM的起始地址:0X0800 0000 大小:0X8000 512KB
- RAM的起始地址:0X2000 0000 大小:0X1000 64KB