第1章 Linux C语言程序设计
1.1 C语言
1.1.1 C语言简介
1.1.2 C语言的发展历史
1.1.3 C语言的特点
1.2 Linux概述
1.3 Linux C语言程序设计简介
1.3.1 Linux应用编程、系统编程和内核编程
1.3.2 Linux图形界面编程
1.4 Linux C语言编程环境
1.4.1 Ubuntu Linux虚拟机
1.4.2 gedit、vim和nano
1.4.3 C语言编译器及集成开发环境
1.4.4 Hello World程序
1.5 习题
第2章 C语言基础Ⅰ
2.1 数据
2.1.1 数据类型
2.1.2 常量
2.1.3 变量和标识符
2.1.4 数据类型转换
2.1.5 转义字符(转义序列)
2.2 运算符
2.2.1 运算符和表达式
2.2.2 算术运算
2.2.3 赋值运算
2.2.4 关系运算
2.2.5 逻辑运算符
2.2.6 条件运算符
2.2.7 逗号运算符
2.2.8 sizeof运算符与typedef类型声明
2.2.9 位运算
2.2.10 复合赋值运算符
2.3 结构化程序设计
2.3.1 顺序结构
2.3.2 分支结构
2.3.3 循环结构
2.4 输入/输出
2.4.1 标准输出函数printf
2.4.2 标准输入函数scanf
2.5 数组
2.5.1 一维数组
2.5.2 二维数组
2.5.3 一维字符数组
2.5.4 一维字符数组的输入/输出
2.5.5 字符串处理函数
2.5.6 二维字符数组
2.6 习题
第3章 C语言基础Ⅱ
3.1 函数
3.1.1 C语言库函数
3.1.2 函数定义和声明
3.1.3 函数调用及参数传递
3.1.4 函数的嵌套与递归
3.1.5 回调函数
3.1.6 return语句
3.1.7 全局变量、局部变量和作用域
3.1.8 变量的存储类别及生存期
3.1.9 内部函数和外部函数
3.2 预处理
3.2.1 预处理的步骤
3.2.2 宏定义和内联函数
3.2.3 条件编译
3.2.4 文件包含
3.3 指针
3.3.1 指针的基本运算
3.3.2 指针与数组
3.3.3 指针与const限定符
3.3.4 指针与字符串
3.3.5 指针函数与函数指针
3.3.6 再讲回调函数
3.3.7 可变参数
3.3.8 二级指针与多级指针
3.3.9 指针数组和数组指针
3.3.10 动态内存管理
3.4 结构体、共用体和枚举
3.4.1 结构体
3.4.2 位域
3.4.3 共用体
3.4.4 枚举
3.5 零长数组、变长数组和动态数组
3.6 编码风格与缩进工具indent
3.7 习题
第4章 编译与调试
4.1 gcc、make、Makefile、cmake和CMakeLists.txt
4.1.1 gcc
4.1.2 make和Makefile
4.1.3 cmake和CMakeLists.txt
4.2 完整的编译过程
4.3 调试程序
4.3.1 调试(Debug)和GDB
4.3.2 测试用例
4.3.3 GDB启动程序
4.3.4 断点
4.3.5 观察点
4.3.6 捕捉点
4.3.7 信号
4.3.8 单步调试
4.3.9 打印输出
4.3.10 函数栈帧
4.3.11 TUI窗口
4.3.12 函数跳转
4.3.13 段错误
4.3.14 coredump
4.3.15 调试正在运行的程序
4.3.16 调试多进程和多线程
4.3.17 gdb使用示例
4.4 习题
第5章 链表
5.1 单向链表
5.1.1 单链表结构与链表结点类型
5.1.2 创建单链表
5.1.3 插入结点
5.1.4 删除结点
5.1.5 读取结点
5.1.6 查找结点
5.1.7 打印单链表
5.1.8 逆转单链表
5.1.9 构建单向循环链表
5.1.10 销毁单链表
5.1.11 主函数及测试结果
5.2 双向链表
5.2.1 双链表结构与链表结点类型
5.2.2 创建双链表
5.2.3 插入结点
5.2.4 删除结点
5.2.5 读取结点
5.2.6 查找结点
5.2.7 打印双链表
5.2.8 逆转双链表
5.2.9 构建双向循环链表
5.2.10 销毁双向循环链表
5.2.11 主函数及测试结果
5.3 内核链表
5.3.1 list_head
5.3.2 offsetof、container_of和list_entry
5.3.3 链表初始化
5.3.4 插入结点
5.3.5 删除结点
5.3.6 替换结点
5.3.7 移动结点
5.3.8 判断函数
5.3.9 合并结点
5.3.10 遍历链表
5.3.11 用户空间使用内核链表
5.4 习题
第6章 C标准库
6.1 C语言标准和glibc
6.2 标准输入/输出函数库
6.2.1 fopen/fclose
6.2.2 stdin/stdout/stderr
6.2.3 errno与perror函数
6.2.4 以字节为单位的I/O函数
6.2.5 以字符串为单位的I/O函数
6.2.6 以记录为单位的I/O函数
6.2.7 格式化读写文件
6.2.8 操作读写位置的函数
6.2.9 FILE结构体及I/O缓冲区
6.3 标准工具函数库
6.3.1 动态内存分配与释放
6.3.2 整数算术
6.3.3 随机数
6.3.4 数值字符串
展开