韦东山FreeRTOS训练营笔记一
- C语言数据结构
1.推荐的C语言基础资料
《C语言程序设计:现代方法》
1-16章都是C语言语法基础。
https://book.douban.com/subject/4279678/
2.简述C语言中的基础知识
1).数据类型(常用char, short, int , long, signed, unsigned, float, double, sizeof)
2).运算和控制( =, +, -, *, while, do-while, if, else, switch, case, continue, break)
3).数据存储(static, extern, const, volatile)
4).结构(struct, enum, union, typedef)
5).位操作和逻辑运算(<<, >>, &, |, ~, ^)
6).预处理(#define, #include, #if...#elif...#else...#endif等)
3.位、字节、字的关系
位(bit):计算机中最基本的单位,对应0或1
字节(Byte):计算机中数据存储的基本单位,8位=1字节
字(Word):计算机进行数据处理和运算的单位。32位机中,4字节=1字;64位机中,8字节=1字;
-
- 数据结构
- 整型
- char 8位
- byte 8位
- short 16位
- int 32位
- long 64位
- float 32位
- double 64位
- 整型
- 数据结构
补充
-
-
-
- signed 有符号
- unsigned 无符号
- sizeof 计算数据的长度,当不知道数据的大小时可用sizeof来计算
- =, +, -, *为算数运算符,while, do-while为循环语句, if, else, switch, case为条件选择语句,continue, break为退出语句
- static:限制变量和函数的作用域;extern:扩大变量和函数的作用域
- const:常量标识符,数值不能被修改
- volatile:防止编译器优化,以保证数据的准确性
- struct:结构体,将不同类型的数据结构和函数指针组织在一起
- enmu:枚举,若干整数类型
- union:联合,与结构体类似,但内容只能为一个数据类型,可用于CRC校验、扫描按键的位域
- typedef:用于定义结构体的名字
- <<:左移运算符,高位补齐,低位补零
- >>:右移运算符,低位补齐,高位补零
- &:按位与运算,两个数都为1,结果才为1
- |:按位或运算,两个数只要有一个为1,结果就为1
- ~:取反运算,1为0,0为1
- ^:异或运算,只要两个数相同,结果就为0
- #define:宏定义,在编译时使用
- #include :包含头文件,<>指系统文件;“”指用户自己编写的头文件;如 #include<stdio.h> #include "myfile.h"
- #if...#elif...#else...#endif:条件编译,使得程序更加容易理解和移植
-
- 总结
- 变量的属性
- 变量名、占用内存大小、数据类型、内存地址
- 为何需要如此多的数据类型
- CPU内存有限,为了节省内存空间,不同的算法场景应用不同大小的数据类型
- 变量的属性
- 问题
- 4字节等于多少位? 答案 4*8=32位
-
- 对于传递的"数据数据",我们把它称为"输入事件"。
"输入事件"结构体可以支持多种类型的设备,比如按键、触摸屏、网络数据、scanf数据。
结构体类型定义如下:
- 输入设备
输入事件由输入设备产生,输入设备的核心是获得数据事件的函数,结构体定义如下