这段时间系统梳理了嵌入式C语言的学习大纲,从前期必备的计算机底层常识,到每一种基础数据类型的内存规则、取值范围全部整理出来,完全是课堂手写笔记改编,适合零基础循序渐进学习。
一、C语言整体学习大纲
整套C语言一共分为9个学习模块,也是嵌入式开发必须全部掌握的内容:
1. 基本数据类型、表达式与运算符
2. 标准输入与输出函数
3. 流程控制:分支结构、循环结构
4. 自定义函数编写
5. 数组用法
6. 指针(C语言核心难点)
7. 构造数据类型
8. 内存管理与位运算
9. 程序调试方法
二、学习C语言前必备储备知识
想要学好C语言,一定要先弄懂计算机底层运行逻辑,一共三块内容。
1. 计算机组成与程序运行原理
计算机由五大部件构成:运算器、控制器、存储器、输入设备、输出设备。
CPU负责执行指令,程序存放在硬盘里,运行时加载到内存,同时还有高速缓存Cache用来提升读写速度。
2. 计算机存储单位换算
• bit:二进制位,只有0和1两种状态
• byte:字节,内存基本存储单位,8 bits = 1 byte
• 递进换算规则(相邻单位倍率1024)
1024 bytes = 1KB
1024 KB = 1MB
1024 MB = 1GB
1024 GB = 1TB
3. 四种进制规则
• 二进制:取值 0、1
• 八进制:取值 0~7
• 十进制:取值 0~9
• 十六进制:取值 0~F
三、C语言数据类型整体分类
C语言的数据类型分成三大类:基本数据类型、构造数据类型、指针类型。
其中基本类型又细分为:整型、字符型、浮点型、空类型;泊尔类型需要引入头文件才能使用。
(一)整型类型(Ubuntu 64位系统)
整型分为有符号signed(包含正数、负数、0)和无符号unsigned(只有大于等于0的数字),最高位是符号位,其余位置为数值位;有符号数依靠补码存储,无符号数原码和补码一致。
关键字sizeof()可以查询任意类型占用的字节数量,结果返回整型数字。
1. short 短整型(占用2字节)
• unsigned short:范围 0 ~ 65535
• signed short:最大值32767,最小值-32768
规律:无符号整型达到最大值再加1,会跳转到最小值;无符号最小值减1,自动变成最大值,也就是数据溢出。
2. int 基本整型(占用4字节)
• unsigned int:最大值 2³²-1,最小值0
• signed int:最大值2³¹-1,最小值 -2³¹
3. long 长整型(占用8字节,一般情况long字节数大于等于int字节数)
• unsigned long:最大值 2⁶⁴-1
• signed long:最大值 2⁶³-1,最小值 -2⁶³
(二)字符类型 char(占用1个字节)
用来存放字母、符号、转义字符,例如 a~z、A~Z、'0'~'9'、\n换行符等。
• unsigned char:范围 0 ~ 255
• signed char:最大值127,最小值-128
(三)浮点类型(存放小数,遵循IEEE存储标准)
1. float 单精度浮点型
占用4个字节,有效精度6~8位;内存结构:1位符号位 + 8位指数位 + 23位尾数位。
2. double 双精度浮点型
占用8个字节,有效精度12~16位;内存结构:1位符号位 + 11位指数位 + 52位尾数位。
重要注意点:浮点数在内存存储时会存在精度丢失问题。
(四)空类型 void
两种使用场景:
1. 用在函数形参和返回值:代表不需要传入参数、没有返回数据
2. void* 万能指针,可以接收任意类型地址,是嵌入式里常用写法
(五)泊尔类型 bool
占用1字节,true等价于数字1,false等价于数字0;
使用时必须导入头文件:#include <stdbool.h>