跳到正文

C

C 语言

从语法骨架到内存模型、未定义行为与受限环境写法,把 C 真正当成一门需要精确理解的语言。

12 / 12 已发布 12 篇

基础 5 节

01

语言骨架:变量、类型与运算符

  • 关键字、标识符与作用域
  • 整型/浮点/字符的取值范围与精度损失
  • 运算符优先级、结合性与求值顺序
  • 隐式提升与显式转换的坑
  1. 语言骨架:变量、类型与运算符
02

流程控制与函数

  • if/switch 的常见陷阱与 fallthrough
  • 循环边界与 break/continue/goto
  • 函数声明、定义与前置声明
  • 递归、栈帧与尾递归
  1. 流程控制与函数
03

数组与字符串

  • 一维/多维数组的内存布局
  • 数组名退化(decay)与指针的区别
  • 字符数组与 \0 终止符
  • 越界访问为什么"看起来能用"
  1. 数组与字符串
04

结构体、联合体与枚举

  • 结构体定义、嵌套与自引用
  • 点/箭头运算符与成员访问
  • 联合体的类型双关与字节序
  • 枚举做常量组与状态机
  1. 结构体、联合体与枚举
05

预处理与编译四阶段

  • 预处理→编译→汇编→链接各做什么
  • #define 宏的参数括号与副作用
  • 条件编译与平台分支
  • 头文件守卫、包含顺序与循环包含
  1. 预处理与编译四阶段

进阶 5 节

06

指针与内存模型

  • 指针算术与数组等价关系
  • 多级指针与指针的指针
  • void* 与类型擦除的回调设计
  • 函数指针、回调表与跳转表
  1. 指针与内存模型
07

标准库常用设施

  • string.h 全表与长度语义
  • snprintf 安全格式化与解析
  • stdlib 的转换、伪随机与搜索排序
  • errno 的正确用法与线程安全
  1. 标准库常用设施
08

动态内存与对象生命周期

  • malloc/calloc/realloc/free 与失败处理
  • 栈/堆/静态区/常量区分布
  • 内存池与分代分配
  • 泄漏、双释放、use-after-free 的成因
  1. 动态内存与对象生命周期
09

文件与流式 IO

  • FILE 流、缓冲模式与 fflush
  • 文本与二进制模式的差异
  • 格式化读写与配置文件解析
  • 行读取的正确写法与getline 陷阱
  1. 文件与流式 IO
10

复杂声明与可变参数

  • 阅读复杂声明(函数指针数组等)
  • stdarg 实现可变参数
  • 柔性数组与变长结构
  • 位域、对齐与 sizeof 的真实含义
  1. 可变参数与复杂声明

高级 2 节

11

未定义行为与严格别名

  • UB 清单:序列点、溢出、空指针解引用
  • 严格别名规则与 -fstrict-aliasing
  • 为什么优化会"吃掉"你的代码
  • 用 UBSAN 与编译器告警把 UB 抓出来
  1. 未定义行为与严格别名
12

受限环境与 volatile

  • volatile 与 MMIO/中断共享变量
  • MISRA C 高频规则
  • 无堆策略与栈用量估算
  • 定点数、查表法与常量折叠
  1. 受限环境与 volatile