前言 1
第一部分 语言第1章 C语言基础 9
C语言特性 9
C程序的结构 10
源代码文件 12
注释 13
字符集 14
标识符 19
C编译器运行原理 23
第2章 数据类型 26
数据类型分类 26
整数数据类型 27
浮点数据类型 32
复数浮点数据类型(C99) 34
枚举数据类型 35
void数据类型 36
第3章 字面值 39
整数常量 39
浮点常量 40
字符常量 42
字符串字面值 44
第4章 类型转换 47
算术类型的转换 48
非算术类型的转换 55
第5章 表达式和运算符 62
计算表达式 63
运算符全面剖析 66
常量表达式 88
第6章 语句 90
表达式语句 90
语句块 91
循环 92
选择语句 96
无条件跳转 99
第7章 函数 103
函数定义 103
函数声明 109
函数如何被执行 111
指针当作自变量和返回值 111
Inline函数 112
递归函数 114
可选性自变量 115
第8章 数组 117
定义数组 117
存取数组元素 119
初始化数组 120
字符串 122
多维数组 123
数组作为函数的自变量 126
第9章 指针 128
声明指针 128
指针的运算 131
指针和类型的限定符 135
“数组的指针”和“指针的数组” 138
指向函数的指针 142
第10章 结构、联合、位字段 144
结构 144
联合 154
位字段 155
第11章 声明 158
一般语法 158
类型名称 165
typedef声明 166
标识符的链接 168
对象的生存周期 169
初始化 170
第12章 动态内存管理 172
已分配内存的特性 174
调整内存大小和释放内存 174
通用的二叉树 176
特性 176
实践 177
第13章 输入和输出 186
流 186
文件 187
打开和关闭文件 189
读操作和写操作 191
文件随机访问 208
第14章 预处理指令 211
插入头文件的内容 212
定义和使用宏 214
条件式编译 221
定义行号 222
产生错误信息 223
#pragma预处理指令 223
_Pragma运算符 224
预定义的宏 225
第二部分 标准链接库第15章 标准头文件 229
使用标准头文件 229
标准头文件的内容 232
第16章 函数简介 254
输入和输出 254
数学函数 255
字符分类和转换 262
字符串处理 264
多字节字符 265
在数字和字符串之间转换 266
搜索和排序 267
内存区域处理 267
动态内存管理 268
日期和时间 268
进程控制 269
国际化 271
非局部性跳转 271
调试 272
错误信息 273
第17章 标准链接库函数 274
第三部分 基本工具第18章 GCC编译器 505
GNU编译器集合 505
获取和安装GCC 506
使用GCC编译C程序 506
C方言 514
编译器警告 515
优化 517
调试 520
剖析 520
选项和环境变量汇总 521
第19章 使用make创建C程序 526
目标、前提和命令 526
Makefile 527
注释 534
伪目标 541
其他目标属性 542
宏 543
函数 544
预处理指令 548
执行make 551
第20章 使用GDB调试C程序 559
安装GDB 559
调试过程范例 560
启动GDB 564
使用GDB命令 568