C 语言是嵌入式与系统编程的通用语言:它贴近硬件、语法精简、可移植性强,几乎所有操作系统内核、编译器和 MCU 固件都由 C 写成。学 C 不只是学语法,更是理解「内存、指针、编译链接」的入口。
一句话定位
C = 一门「小而深」的语言:语法少,但指针与内存模型足够陪你走完整个职业生涯。
知识体系
flowchart TD A[C 语言] --> B[基础语法] A --> C[核心难点] A --> D[模块化] A --> E[工程实践] B --> B1["数据类型与变量"] B --> B2["运算符与表达式"] B --> B3["控制语句: 分支 / 循环"] B --> B4["函数与递归"] C --> C1["指针与地址"] C --> C2["数组与指针的关系"] C --> C3["字符串与字符数组"] C --> C4["结构体 / 联合 / 枚举"] C --> C5["动态内存 malloc / free"] D --> D1["头文件与源文件"] D --> D2["static / extern 作用域"] D --> D3["多文件编译与链接"] E --> E1["预处理器 #define / #include"] E --> E2["位运算与寄存器操作"] E --> E3["调试: GDB / printf"]
章节要点
第一章 初识 C 语言
- 编译流程:预处理 → 编译 → 汇编 → 链接,最终得到可执行文件。
- 第一个程序:
#include <stdio.h>+main函数 +printf。
第二章 C 语言概述
- 程序结构、标识符命名规则、注释、
main的返回值。
第三章 数据和 C
- 基本类型:
int/char/float/double及short/long/unsigned修饰。 - 进制、常量与变量、类型转换(隐式与强制)。
第四章 字符串和格式化输入/输出
printf/scanf的格式说明符;gets/fgets的坑。- 字符串本质是以
\0结尾的字符数组。
第五章 运算符、表达式和语句
- 算术、关系、逻辑、位、三目运算符;自增自减的求值顺序陷阱。
第六章 控制语句:循环
for/while/do-while的适用场景与互转。
第七章 控制语句:分支和跳转
if-else嵌套、switch-case、break/continue/goto。
核心难点:指针
- 指针就是地址:
int *p = &a;,*p取内容,&a取地址。 - 数组名即首元素地址:
arr[i]等价于*(arr + i)。 - 函数传参:C 只有值传递,想修改外部变量就得传指针。
- 动态内存:
malloc配free,配对使用,避免内存泄漏与野指针。