这本笔记以 C语言中文网教程 的知识主线为参照,但没有直接照搬原目录,而是按当前站点的笔记规范重组成更适合复习的章节结构。
组织原则只有两条:
- 先把 C 语言真正反复出现的基础概念讲清楚,例如数据、地址、作用域、生命周期、编译和文件。
- 再把容易混淆的主题单独拆出来,例如二维数组、复杂指针、位运算、随机数和调试。
C语言学习路线
入门准备 -> 数据与运算 -> 流程控制与函数 -> 数组与指针 -> 自定义类型与内存 -> 输入输出与工程基础 -> 实践补充
入门准备
1.1 C语言简介1.2 环境设置1.3 程序结构与基础语法1.4 进制、编码与内存基础1.5 编译、链接与诊断基础
这一部分的目标:
- 建立对 C 语言定位、应用场景和学习重点的整体认识。
- 搭好编辑器、编译器、终端三件套,并能独立编译运行程序。
- 明白二进制、字符编码、字节、源文件、编译和链接这些后面反复出现的基础概念。
数据与运算
2.1 数据类型2.2 变量2.3 常量2.4 存储类2.5 运算符2.6 强制类型转换
这一部分会帮助你:
- 认识整数、浮点、字符、布尔、
void等常见类型的边界与用途。 - 理解变量定义、初始化、作用域、生命周期和链接属性。
- 写出结果明确、类型转换清晰、格式化输出正确的表达式。
流程控制与函数
3.1 判断语句3.2 循环3.3 函数3.4 作用域规则3.5 递归与可变参数
这一部分更偏程序组织能力:
- 学会让程序按条件、循环和函数调用的顺序执行。
- 理解值传递、函数原型、局部变量和全局变量之间的关系。
- 能判断递归什么时候好用,什么时候会带来额外成本。
数组与指针
4.1 数组4.2 枚举与typedef4.3 指针4.4 函数指针与回调函数4.5 字符串4.6 二维数组与变长数组4.7 数组指针、指针数组与二级指针
这一部分是 C 语言的核心:
- 学会用数组处理一组连续数据。
- 理解地址、解引用、指针运算和数组退化。
- 看懂二维数组、复杂指针声明、字符串和回调函数这些常见但容易卡住的写法。
自定义类型与内存
5.1 结构体5.2 共用体5.3 位域5.4 内存管理5.5 未定义行为5.6 位运算与字节序
这一部分会带你进入更底层的理解:
- 学会组织复杂数据并分析内存布局。
- 学会动态申请和释放内存,建立基本的资源所有权意识。
- 识别位操作、字节序和未定义行为这种“程序能跑但不一定可靠”的问题源头。
输入输出与工程基础
6.1 输入与输出6.2 文件读写6.3 预处理器与头文件6.4 错误处理与安全函数6.5 命令行参数
这一部分偏向实际开发:
- 学会和终端、文件、标准流打交道。
- 学会组织多文件工程,使用头文件、宏和条件编译。
- 学会检查错误、区分
stdout与stderr,写出更稳妥的 C 程序。
实践补充
7.1 排序算法入门7.2 随机数与简单模拟7.3 调试基础与断言
这一部分用于把前面学过的数组、循环、文件、库函数和调试手段组合起来,形成更完整的学习闭环。
推荐学习方式
- 先按顺序读完前三个单元,再进入复杂指针、结构体、文件与调试。
- 每一章都至少亲手敲一遍示例,尤其是数组、指针、动态内存和文件相关章节。
- 遇到“常见错误”时,最好顺手写一个错误版本,观察编译器或运行时会给出什么反馈。
- 学到函数、数组、字符串和命令行参数后,就可以开始写一些命令行小工具巩固。
- 学到调试章节后,尽量在调试器里单步跟一次指针、数组和函数调用过程,会比只看代码更容易建立直觉。