1. 历史
  2. 前言
  3. 程序的基本概念
    1. 程序和编程语言
    2. 自然语言和形式语言
    3. 程序的调试
    4. 第一个程序
  4. 常量、变量和表达式
    1. 继续 Hello World
    2. 常量
    3. 变量
    4. 赋值
    5. 表达式
    6. 字符类型与字符编码
  5. 简单函数
    1. 数学函数
    2. 自定义函数
    3. 形参和实参
    4. 全局变量、局部变量和作用域
  6. 分支语句
    1. if 语句
    2. if/else 语句
    3. 布尔代数
    4. switch 语句
  7. 深入理解函数
    1. return 语句
    2. 增量式开发
    3. 递归
  8. 循环语句
    1. while 语句
    2. do/while 语句
    3. for 语句
    4. break 和 continue 语句
    5. 嵌套循环
    6. goto 语句和标号
  9. 结构体
    1. 复合类型与结构体
    2. 数据抽象
    3. 数据类型标志
    4. 嵌套结构体
  10. 数组
    1. 数组的基本概念
    2. 数组应用实例:统计随机数
    3. 数组应用实例:直方图
    4. 字符串
    5. 多维数组
  11. 编码风格
    1. 缩进和空白
    2. 注释
    3. 标识符命名
    4. 函数
    5. indent 工具
  12. gdb
    1. 单步执行和跟踪函数调用
    2. 断点
    3. 观察点
    4. 段错误
  13. 排序与查找
    1. 算法的概念
    2. 插入排序
    3. 算法的时间复杂度分析
    4. 归并排序
    5. 线性查找
    6. 折半查找
  14. 栈与队列
    1. 数据结构的概念
    2. 堆栈
    3. 深度优先搜索
    4. 队列与广度优先搜索
    5. 环形队列
  15. 本阶段总结
  16. 计算机中数的表示
    1. 为什么计算机用二进制计数
    2. 不同进制之间的换算
    3. 整数的加减运算
    4. 浮点数
  17. 数据类型详解
    1. 整型
    2. 浮点型
    3. 类型转换
  18. 运算符详解
    1. 位运算
    2. 其它运算符
    3. Side Effect 与 Sequence Point
    4. 运算符总结
  19. 计算机体系结构基础
    1. 内存与地址
    2. CPU
    3. 设备
    4. MMU
    5. Memory Hierarchy
  20. x86 汇编程序基础
    1. 最简单的汇编程序
    2. x86 的寄存器
    3. 第二个汇编程序
    4. 寻址方式
    5. ELF 文件
  21. 汇编与 C 之间的关系
    1. 函数调用
    2. main 函数和启动例程
    3. 变量的存储布局
    4. 结构体和联合体
    5. C 内联汇编
    6. volatile 限定符
  22. 链接详解
    1. 多目标文件的链接
    2. 定义和声明
    3. 静态库
    4. 共享库
    5. 虚拟内存管理
  23. 预处理
    1. 预处理的步骤
    2. 宏定义
    3. 条件预处理指示
    4. 其它预处理特性
  24. Makefile 基础
    1. 基本规则
    2. 隐含规则和模式规则
    3. 变量
    4. 自动处理头文件的依赖关系
    5. 常用的 make 命令行选项
  25. 指针
    1. 指针的基本概念
    2. 指针类型的参数和返回值
    3. 指针与数组
    4. 指针与 const 限定符
    5. 指针与结构体
    6. 指向指针的指针与指针数组
    7. 指向数组的指针与多维数组
    8. 函数类型和函数指针类型
    9. 不完全类型和复杂声明
  26. 函数接口
    1. 本章的预备知识
    2. 传入参数与传出参数
    3. 两层指针的参数
    4. 返回值是指针的情况
    5. 回调函数
    6. 可变参数
  27. C 标准库
    1. 字符串操作函数
    2. 标准 I/O 库函数
    3. 数值字符串转换函数
    4. 分配内存的函数
  28. 链表、二叉树和哈希表
    1. 链表
    2. 二叉树
    3. 哈希表
  29. 本阶段总结
  30. 文件与 I/O
    1. 汇编程序的 Hello world
    2. C 标准 I/O 库函数与 Unbuffered I/O 函数
    3. open/close
    4. read/write
    5. lseek
    6. fcntl
    7. ioctl
    8. mmap
  31. 文件系统
    1. 引言
    2. ext2 文件系统
    3. VFS
  32. 进程
    1. 引言
    2. 环境变量
    3. 进程控制
    4. 进程间通信
    5. 练习:实现简单的 Shell
  33. Shell 脚本
    1. Shell 的历史
    2. Shell 如何执行命令
    3. Shell 的基本语法
    4. bash 启动脚本
    5. Shell 脚本语法
    6. Shell 脚本的调试方法
  34. 正则表达式
    1. 引言
    2. 基本语法
    3. sed
    4. awk
    5. 练习:在 C 语言中使用正则表达式
  35. 信号
    1. 信号的基本概念
    2. 产生信号
    3. 阻塞信号
    4. 捕捉信号
  36. 终端、作业控制与守护进程
    1. 终端
    2. 作业控制
    3. 守护进程
  37. 线程
    1. 线程的概念
    2. 线程控制
    3. 线程间同步
    4. 编程练习
  38. TCP/IP 协议基础
    1. TCP/IP 协议栈与数据包封装
    2. 以太网(RFC 894)帧格式
    3. ARP 数据报格式
    4. IP 数据报格式
    5. IP 地址与路由
    6. UDP 段格式
    7. TCP 协议
  39. socket 编程
    1. 预备知识
    2. 基于 TCP 协议的网络程序
    3. 基于 UDP 协议的网络程序
    4. UNIX Domain Socket IPC
    5. 练习:实现简单的 Web 服务器
  40. 附录 A. 字符编码
    1. ASCII 码
    2. Unicode 和 UTF-8
    3. 在 Linux C 编程中使用 Unicode 和 UTF-8
  41. 附录 B. GNU Free Documentation License
  42. 参考书目
  43. 索引