注:由于章节数量及顺序尚未确定,本文件有很多不完善的地方
- 在开始编程之前
- 一个简单的C程序
- 对象 初步
- 数据
- 隐式转换
- 字符常量 包括Unicode
- 字符串 初步
- 运算符 表达式
- 语句
- 函数 初步
- 函数 包括递归示例等等
- 对象 包括生存期等
- 数组 包括多维数组 VLA
- 指针 包括
void*
别名 - 声明详解
- 类型限定符
const
volatile
restrict
- 复合字面量
- 文件操作
- 结构体 (包括柔性数组)
- 内存对齐
- 共用体,枚举
- 链接与存储期
- 查找
- 位操作 布尔代数
- 可变参数
<stdarg.h>
- 再谈
printf()
和scanf()
- 泛型
_Generic
- 属性
- 预处理器 附带一个
#if 0
小技巧 - 内存管理
- 错误处理
<errno.h>
<assert.h>
static_assert
- C标准库的介绍和文档
- C输入输出库
<stdio.h>
- 一些预定义的宏
<stddef.h>
<stdint.h>
<limits.h>
- C数学库
<math.h>
一部分<stdlib.h>
- C复数库
<complex.h>
- C二分查找和快速排序函数(in
<stdlib.h>
) - C随机数生成(in
<stdlib.h>
) - C时间日期库
<time.h>
- C字符处理库
<ctype.h>
- C字符串API
<string.h>
- C执行控制函数(in
<stdlib.h>
) - C线程库
<thread.h>
- C原子操作库
<stdatomic.h>
- BMI测试 以及改进版
if语句 - 简易计算器
自定义函数和分支语句 - 密码验证
字符串的应用 - 分解质因数
- 高精度整数
- 生命游戏
- 五子棋人机对弈
- 卡牌游戏对战
- 复数计算器
- 矩阵运算
- 桌面计算器
分析器(递归下降) json
parser词法分析
- 算法的定义
- 分析算法的方法
- 时间/空间复杂度
- 分治法与递归式 含主方法和Akra-Bazzi方法
- 排序
- dp
- 贪心
- dfs和bfs
- 最小生成树和最短路径
- 矩阵运算
- 线性规划
- 傅里叶变换与FFT
- 字符串匹配
- ADT
- 线性表 包括顺序表,栈,队列和链表
- 散列表和散列函数
- 二叉搜索树和红黑树
- B树
- C 项目结构 和 “为什么要分出头文件”
- CMake
- C大型项目源码的阅读
- C源码示例 - kilo
- C网络编程
- 网络基础 - ISO七层模型
- 网络基础 - TCP
- 网络基础 - UDP
- C源码示例 - libuv
- 项目:多人聊天室
- 网络基础 - HTTP
- 项目:web服务器mdr_server
- 编译原理基础 - 词法分析(长)
- 编译原理基础 - 语法分析(长)
- 编译原理基础 - 运行时刻环境
- 编译原理基础 - 机器无关的代码优化
- C源码示例:lua
- 项目:解释型语言mdr lang
- 操作系统 - kernel
- 操作系统 - shell
- 后面不敢往下写了(悲
- 编程交流群生存指南
- 编程交流平台纪行
“示例”指在视频中完整写出来的;“案例”指视频中不完整写出来,留一部分让听者完成的;“项目”一般是很长的,在视频中似乎也很难完整写出来
- 语法和标准库 本教程不涉及编译器扩展,不讲用C写桌面程序
- 小示例和练习(配合第一部分)
- 数据结构与算法
- 项目案例