C语言项目实战50问
📚 共计 50 章节
01
C语言与嵌入式开发
从Hello World到点亮LED,理解程序在单片机上的运行本质。
嵌入式
入门
02
变量与内存
深入理解变量的存储类型、作用域、生命周期以及内存四区模型。
内存
作用域
03
指针的本质
指针就是地址,理解指针与数组、指针与函数、多级指针的底层逻辑。
指针
地址
04
数组与指针的纠缠
数组名是常量指针,指针运算与数组遍历,数组作为函数参数退化为指针。
数组
指针
05
字符串与字符指针
字符串的存储方式,字符数组与字符指针的区别,常用字符串函数实现。
字符串
字符指针
06
结构体与内存对齐
结构体定义、初始化、嵌套,内存对齐规则与#pragma pack的使用。
结构体
对齐
07
动态内存管理
malloc/calloc/realloc/free,内存泄漏、野指针、内存碎片问题。
动态内存
泄漏
08
函数与函数指针
函数调用栈、递归、回调函数、函数指针数组实现状态机。
函数指针
回调
09
预处理与宏
#define、#include、条件编译、#与##运算符、宏的陷阱。
预处理
宏
10
位操作与嵌入式应用
位与、位或、位异或、取反、左移右移,寄存器位操作实战。
位操作
寄存器
11
链表基础
单向链表的创建、插入、删除、遍历,头节点与头指针。
链表
单向
12
链表进阶
双向链表、循环链表、内核链表实现。
双向链表
循环
13
栈与队列
顺序栈、链式栈、循环队列、链式队列的实现与应用。
栈
队列
14
二叉树与递归
二叉树的创建、前中后序遍历、层序遍历、递归思想。
二叉树
递归
15
排序算法(上)
冒泡、选择、插入排序,时间复杂度与稳定性分析。
排序
基础
16
排序算法(下)
快速排序、归并排序、堆排序,分治思想与递归实现。
高级排序
分治
17
查找算法
顺序查找、二分查找、哈希查找,哈希冲突解决。
查找
哈希
18
文件操作(上)
fopen/fclose/fread/fwrite/fprintf/fscanf,文本与二进制文件。
文件IO
标准库
19
文件操作(下)
文件随机读写、文件缓冲区、标准设备文件。
随机读写
缓冲区
20
编译链接原理
预处理、编译、汇编、链接,静态库与动态库的制作。
编译
链接
21
Makefile与工程管理
Makefile语法、变量、自动推导、多目录工程构建。
Makefile
构建
22
GDB调试艺术
断点、单步、查看变量、调用栈、core dump分析。
调试
GDB
23
代码风格与规范
命名规范、注释规范、代码布局、模块化设计。
规范
风格
24
模块化编程
头文件设计、源文件分离、static与extern的正确使用。
模块化
static
25
状态机编程
有限状态机的C语言实现,事件驱动与状态转移表。
状态机
事件驱动
26
环形缓冲区
生产者消费者模型,无锁环形缓冲区的实现。
缓冲区
无锁
27
协议解析实战
串口通信协议,帧头帧尾校验,状态机解析。
协议
串口
28
CRC校验
CRC原理,CRC8/CRC16/CRC32的C语言实现。
CRC
校验
29
JSON解析
cJSON库的使用,JSON的创建与解析。
JSON
cJSON
30
INI配置文件解析
键值对解析,节区管理,读写实现。
INI
配置
31
日志系统设计
分级日志、时间戳、文件滚动、异步写入。
日志
异步
32
断言与错误处理
assert、errno、异常处理模式。
断言
错误
33
单元测试
CUnit/Unity框架使用,测试用例编写,覆盖率。
测试
CUnit
34
代码重构
坏味道识别,提取函数,消除重复,优化结构。
重构
优化
35
设计模式(上)
单例模式、工厂模式、观察者模式的C语言实现。
设计模式
单例
36
设计模式(下)
策略模式、命令模式、适配器模式的C语言实现。
策略
适配器
37
多线程基础
pthread创建、等待、退出,线程同步问题。
多线程
pthread
38
互斥锁与条件变量
互斥锁、读写锁、条件变量的使用与死锁避免。
互斥锁
条件变量
39
信号量
POSIX信号量,生产者消费者问题,哲学家就餐问题。
信号量
同步
40
网络编程基础
socket、bind、listen、accept,TCP客户端服务器。
网络
TCP
41
IO多路复用
select、poll、epoll的原理与使用,高并发服务器。
IO复用
epoll
42
非阻塞IO与异步IO
fcntl设置非阻塞,aio异步读写。
非阻塞
异步
43
信号处理
signal/sigaction,信号集,可重入函数。
信号
可重入
44
定时器实现
alarm、setitimer、timerfd,时间轮算法。
定时器
时间轮
45
内存池设计
固定大小内存池,伙伴算法,slab分配器思想。
内存池
slab
46
原子操作与无锁编程
GCC原子内置函数,CAS操作,无锁队列。
原子操作
无锁
47
C语言与硬件交互
寄存器映射、中断服务函数、volatile关键字。
硬件
volatile
48
Bootloader设计
启动流程、分区管理、固件升级。
Bootloader
固件
49
RTOS任务管理
任务创建、调度、同步,FreeRTOS源码分析。
RTOS
FreeRTOS
50
综合项目实战
智能家居网关,从需求分析到系统交付的全流程。
项目
智能家居