C语言核心技术(原书第2版)
2020-04-02 13:55:18 0 举报
AI智能生成
C语言核心技术(原书第2版)
作者其他创作
大纲/内容
第一部分 语言
1|chapter 1 C语言基础
1.1 C语言特性
1.2 C语言程序的结构
1.3 源代码文件
1.4 注释
1.5 字符集
1.5.1 宽字符和多字节字符
1.5.2 通用字符名称
1.5.3 双字符组和三字符组
1.6 标识符
1.6.1 标识符的命名空间
1.6.2 标识符作用域
1.7 C编译器运行原理
1.7.1 C编译器的编译阶段
1.7.2 标记
2|chapter 2 数据类型
2.1 数据类型分类
2.2 整数类型
在标准头文件中定义的整数类型
确定位长的整数类型(C99)
2.3 浮点类型
2.4 复数浮点类型
2.5 枚举类型
2.6 void类型
2.6.1 void用于函数声明
2.6.2 void类型表达式
2.6.3 指向void的指针
2.7 对象在内存中的对齐方式
3|chapter 3 字面量
3.1 整数常量
3.2 浮点常量
3.2.1 十进制浮点常量
3.2.2 十六进制浮点常量
3.3 字符常量
3.3.1 字符常量的类型和值
3.3.2 转义序列
3.4 字符串字面量
4|chapter 4 类型转换
4.1 算术类型的转换
4.1.1 类型转换的等级
4.1.2 整数提升
4.1.3 寻常算术转换
4.1.4 其他隐式的类型转换
4.1.5 算术类型转换的结果
4.2 非算术类型的转换
4.2.1 数组和函数指示符
4.2.2 显式的指针转换
4.2.3 隐式的指针转换
4.2.4 在指针和整数类型之间转换
5|chapter 5 表达式和运算符
5.1 如何计算表达式
5.1.1 泛型选择(C11)
5.1.2 左值
5.1.3 副作用和序列点
5.1.4 运算符优先级和结合律
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.3 常量表达式
5.3.1 整数常量表达式
5.3.2 其他常量表达式
6|chapter 6 语句
6.1 表达式语句
6.2 语句块
6.3 循环
6.3.1 while循环
6.3.2 for循环
6.3.3 do...while循环
6.3.4 循环嵌套
6.4 选择语句
6.4.1 if语句
6.4.2 switch语句
6.5 无条件跳转
6.5.1 break语句
6.5.2 continue语句
6.5.3 goto语句
6.5.4 return语句
7|chapter 7 函数
7.1 函数定义
7.1.1 函数与存储类修饰符
7.1.2 K&R风格的函数定义
7.1.3 函数参数
7.1.4 将数组作为函数参数
7.1.5 main()函数
7.2 函数声明
7.2.1 声明可选参数
7.2.2 声明长度可变的数组参数
7.3 函数如何被执行
7.4 指针作为参数和返回值
7.5 内联函数
7.6 无返回函数
7.7 递归函数
7.8 可变参数函数
8|chapter 8 数组
8.1 定义数组
8.1.1 固定长度数组
8.1.2 长度可变数组
8.2 获取数组元素
8.3 初始化数组
8.3.1 编写初始化列表
8.3.2 初始化特定元素
8.4 字符串
8.5 多维数组
8.5.1 矩阵
8.5.2 声明多维数组
8.5.3 初始化多维数组
8.6 数组作为函数参数
9|chapter 9 指针
9.1 声明指针
9.1.1 空指针
9.1.2 void指针
9.1.3 初始化指针
9.2 指针运算
9.2.1 使用指针读取与修改对象
9.2.2 修改和比较指针
9.3 指针和类型限定符
9.3.1 常量指针和指向常量对象的指针
9.3.2 受限指针
9.4 数组的指针和指针的数组
9.4.1 数组指针
9.4.2 指针数组
9.5 指向函数的指针
10|chapter 10 结构、联合与位字段
10.1 结构
10.1.1 定义结构类型
10.1.2 结构对象和typedef名称
10.1.3 不完整结构类型
10.1.4 获取结构成员
10.1.5 初始化结构
10.1.6 初始化特定成员
10.1.7 内存中的结构成员
10.1.8 弹性结构成员
10.1.9 指针作为结构成员
10.2 联合
10.2.1 定义联合类型
10.2.2 初始化联合
10.3 匿名结构与联合
10.4 位字段
11|chapter 11 声明
11.1 对象与函数声明
11.1.1 示例
11.1.2 存储类修饰符
11.1.3 类型限定符
11.1.4 声明和定义
11.1.5 复杂声明符
11.2 类型名称
11.3 typedef声明
11.4 _Static_assert声明
11.5 标识符的链接
11.5.1 外部链接
11.5.2 内部链接
11.5.3 无链接
11.6 对象的存储周期
11.6.1 静态存储周期
11.6.2 线程存储周期
11.6.3 动态存储周期
11.7 初始化
11.7.1 隐式的初始化
11.7.2 显式的初始化
12|chapter 12 动态内存管理
12.1 动态内存分配
12.2 已分配内存的特性
12.3 调整内存大小和释放内存
12.4 通用二叉树
12.5 特性
12.6 二叉树的实现
12.6.1 创建空树
12.6.2 插入新数据
12.6.3 在树中寻找数据
12.6.4 从树中删除节点
12.6.5 遍历一个树
12.6.6 一个简单的应用
13|chapter 13 输入和输出
13.1 流
13.1.1 文本流
13.1.2 二进制流
13.2 文件
13.2.1 文件位置
13.2.2 缓冲区
13.2.3 标准流
13.3 打开和关闭文件
13.3.1 打开文件
13.3.2 访问模式
13.3.3 关闭文件
13.4 读操作和写操作
13.4.1 字节导向流和宽字符导向流
13.4.2 错误处理I/O
13.4.3 无格式I/O
13.4.4 格式化输出
13.4.5 格式化输入
13.5 文件随机访问
13.5.1 获取当前文件位置
13.5.2 设置文件访问位置
14|chapter 14 多线程
14.1 线程
14.1.1 创建线程
14.1.2 其他线程函数
14.2 访问共享数据
14.2.1 互斥
14.2.2 原子对象
14.2.3 原子操作
14.2.4 内存次序
14.2.5 栅栏
14.3 线程间的通信:条件变量
14.4 线程对象和线程存储
14.4.1 使用线程对象
14.4.2 使用线程存储
15|chapter 15 预处理命令
15.1 插入头文件的内容
15.1.1 预处理器如何找到头文件
15.1.2 嵌套的#include命令
15.2 定义和使用宏
15.2.1 没有参数的宏
15.2.2 带参数的宏
15.2.3 在宏内使用宏
15.2.4 宏的作用域和重新定义
15.3 泛型宏
15.4 条件式编译
15.4.1 #if和#elif命令
15.4.2 defined运算符
15.4.3 #ifdef和#ifndef命令
15.5 定义行号
15.6 生成错误消息
15.7 #pragma命令
15.8 _Pragma运算符
15.9 预定义的宏
第二部分 标准库
16|chapter 16 标准头
16.1 使用标准头
16.1.1 运行环境
16.1.2 函数和宏的调用
16.1.3 保留的标识符
16.2 边界检查函数
16.2.1 有效性
16.2.2 运行约束
16.3 标准头的内容
17|chapter 17 函数简介
17.1 输入和输出
17.2 数学函数
17.2.1 整数类型相关的数学函数
17.2.2 浮点函数
17.2.3 类函数宏
17.2.4 算术运算相关的pragma
17.2.5 浮点环境
17.2.6 错误处理
17.3 字符分类和转换
17.3.1 字符分类
17.3.2 字符映射
17.4 字符串处理
17.5 多字节字符
17.6 在数字与字符串之间转换
17.7 搜索和排序
17.8 内存区域处理
17.9 动态内存管理
17.10 日期和时间
17.11 进程控制
17.11.1 与操作系统交互
17.11.2 信号
17.12 国际化
17.13 非本地跳转
17.14 多线程(C11)
17.14.1 线程函数
17.14.2 原子操作
17.15 调试
17.16 错误消息
18|chapter 18 标准库函数
第三部分 基本工具
19|chapter 19 使用GCC编译C程序
19.1 GNU编译器套件
19.2 获取和安装GCC
19.3 使用GCC编译C程序
19.3.1 逐步实现
19.3.2 多个输入文件
19.3.3 动态链接和共享对象文件
19.3.4 独立程序
19.4 C方言
19.5 编译器警告
19.6 优化
19.6.1 -O等级
19.6.2 -f标记
19.6.3 浮点优化
19.6.4 适用于特定架构的选项
19.6.5 为何不优化
19.7 调试
19.8 剖析
19.9 选项和环境变量汇总
19.9.1 命令行选项
19.9.2 环境变量
20|chapter 20 使用make构建C程序
20.1 目标、依赖和命令
20.2 Makefile
20.3 规则
20.3.1 命令脚本
20.3.2 模式化的规则
20.3.3 后缀规则
20.3.4 内置规则
20.3.5 隐式规则链
20.3.6 双冒号规则
20.4 注释
20.5 变量
20.5.1 赋值运算符
20.5.2 变量和空白符
20.5.3 目标专用的变量赋值
20.5.4 自动变量
20.5.5 其他内置变量
20.5.6 环境变量
20.6 伪目标
20.7 其他目标属性
20.8 宏
20.9 函数
20.9.1 内置函数
20.9.2 用户自定义函数
20.10 命令
20.10.1 条件
20.10.2 include
20.10.3 其他命令
20.11 执行make命令
20.11.1 生成头文件依赖关系
20.11.2 递归式make命令
20.11.3 命令行选项
20.11.4 用作运行时选项的特殊目标
20.11.5 生成Makefile规则的GCC选项
21|chapter 21 使用GDB调试C程序
21.1 安装GDB
21.2 调试过程示例
21.2.1 符号信息
21.2.2 找出错误
21.3 启动GDB
21.3.1 命令行参数
21.3.2 命令行选项
21.3.3 初始化文件
21.4 使用GDB命令
21.4.1 命令补充
21.4.2 显示命令帮助说明
21.4.3 状态信息
21.4.4 在调试器中执行一个程序
21.4.5 显示源代码
21.4.6 使用断点
21.4.7 在中断后继续执行
21.4.8 分析栈
21.4.9 显示数据
21.4.10 观测点:观察对变量的操作
21.5 在GDB内分析核心文件
22|chapter 22 使用IDE
22.1 针对C语言的IDE
22.2 针对C/C++的Eclipse IDE
22.2.1 安装Eclipse CDT
22.2.2 运行Eclipse
22.2.3 透视图和视图
22.3 使用Eclipse开发一个C程序
22.3.1 创建一个新的C项目
22.3.2 编辑
22.3.3 编译和运行程序
22.3.4 项目属性
22.4 使用Eclipse调试一个C程序
22.4.1 启动调试器
22.4.2 设置断点
22.4.3 在调试器中控制程序的执行
22.5 关于Eclipse的更多信息
作者介绍
封面介绍
O’Reilly Media,Inc.介绍
本书的组织方式
推荐阅读
本书约定
使用代码示例
Safari Books Online
如何联系我们
0 条评论
下一页