C 语言知识地图
内容简介
这页是 C 语言补充知识的索引。CandCPP基础 保留快速上手主线,C 文件夹负责补充更接近底层和教材细节的内容:指针、类型转换、存储与链接、结构体/联合体/位域、栈与过程调用、手动内存管理和常用库。
学习策略:
- 主线先会写:变量、流程、函数、数组、指针、结构体。
- C 文件夹再补机制:对象表示、地址、生命周期、链接、调用栈、未定义行为。
- 如果问题已经涉及 C++ 对象生命周期、RAII、模板或 STL,不在 C 里硬讲,跳转到对应 C++ 页面。
学习顺序
C 基础补充
-> C语言类型转换规则
-> C语言指针细节
-> C语言结构体
-> C语言联合体
-> C语言位域
-> C语言存储类型
-> C语言系统栈与过程调用
-> C语言MallocFree
-> c语言常用库
-> C语言设计主题索引
| 主题 | 解决的问题 | 入口 |
|---|---|---|
| 类型转换 | 整型提升、通常算术转换、有符号/无符号混用、强制转换边界 | C语言类型转换规则 |
| 指针 | 地址、解引用、数组退化、指针运算、二级指针、函数指针、void* | C语言指针细节 |
| 结构体 | struct、成员访问、初始化、内存对齐、和 C++ struct 的区别 | C语言结构体 |
| 联合体 | union、共享存储、带标签联合体、有效成员 | C语言联合体 |
| 位域 | 位宽成员、标志位、实现相关布局、掩码替代方案 | C语言位域 |
| 存储和链接 | auto、static、extern、register、volatile 的边界 | C语言存储类型 |
| 调用机制 | 栈帧、参数传递、返回地址、局部变量生命周期、递归 | C语言系统栈与过程调用 |
| 堆内存 | malloc、calloc、realloc、free、泄漏、悬挂指针 | C语言MallocFree |
| 标准库 | stdio.h、stdlib.h、string.h、stdint.h 等 | c语言常用库 |
| C 风格设计 | 结构体 + 函数、回调、void*、不完整类型 | C语言设计 |
和 CandCPP 基础的关系
- CandCpp基础数据变量 只讲变量、基础类型和初始化,类型转换细节跳到 C语言类型转换规则。
- CandCpp指针 只讲地址、取地址、解引用和常见危险,完整指针规则跳到 C语言指针细节。
- CandCpp指针进阶 保留数组指针、函数指针、
const指针和void*的入口,不展开所有底层边界。 - CandCpp结构体 讲结构体的基本组织方式,结构体布局和 C/C++ 差异放到 C语言结构体,联合体和位域分别放到 C语言联合体、C语言位域。
- CandCpp底层知识 负责从程序运行角度连接内存、栈、堆和编译链接。
深入边界
这些内容适合按需查阅,不建议在刚入门时一次性死记:
- 严格别名、有效类型、对象表示、未定义行为:未定义行为。
- 资源所有权、释放后访问、重复释放:所有权模型、C语言MallocFree。
- C++ 对象生命周期和构造析构:cpp对象生命周期、RAII。
- 现代 C++ 中替代裸指针和手动内存的写法:智能指针、vector、string。