第一部分 C语言基础知识 2
第1章 欢迎阅读《标准C语言实用全书》 2
1.1 谁应当阅读本书 3
1.2 本书需要的基本知识 3
1.3 如何最好地学习本书 5
1.4 为什么还要写一本关于C语言的书 6
1.5 为什么要使用ANSI C 6
1.6 本书面向何种平台 7
1.7 关于本书的源代码 7
1.8 代码的质量 7
1.9 本书的内容编排 8
1.10 版权 9
1.11 关于CD 9
1.12 C语言编程共同体 10
1.13 小结 12
第2章 编程标准:原因和对策 13
2.1 花括号的格式 14
2.2 空白的使用 16
2.3 结构化编程 19
2.4 初始化 23
2.5 静态变量和全局变量 25
2.6 标识符命名 26
2.7 编写有用的注释 32
2.8 一般的错误和误解 36
2.9 理解说明、定义和原型 43
2.10 可移植性的重要性 44
2.11 宏 49
2.12 C与C + + 49
2.13 小结 50
3.1 优化的要求和古老的历史 51
第3章 优化 51
3.2 考虑性能 52
3.3 剖面测试系统 57
3.4 优化的算法策略 61
3.5 协作和并行优化 71
3.6 何时不优化 74
3.7 小结 76
第4章 处理日期和时间 77
4.1 日期和时间函数 77
4.2 千年虫:与日期相关的问题 85
4.3 有用的一点说明 86
4.4 小结 89
第5章 处理位和字节 90
5.1 C语言中值的表达 90
5.2 整数值的表示 91
5.3 在位处理中使用无符号类型 93
5.4 位移 93
5.5 其他位操作符 94
5.6 位数组(位图) 96
5.7 位的计数 100
5.8 位反射 102
5.9 位字段 105
5.10 关于可移植性 106
5.11 小结 110
第6章 脱机数据存储和检索 111
6.1 目标和应用 111
6.2 基本技术 114
6.3 通用格式 129
6.4 高级技术 136
6.5 相关主题 139
6.6 小结 140
第7章 程序出错时:代码修补 141
7.1 处理诊断 141
7.2 调试常见错误 146
7.3 调试软件 158
7.4 预见失败,争取成功 167
7.5 调试过程 171
7.6 编程者的恶梦 176
7.7 小结 178
第8章 管理内存 179
8.1 什么是内存管理 179
8.2 常见的内存用法错误 179
8.3 内存分配函数出错时 185
8.5 保持控制 189
8.4 Calloc成功时做什么 189
8.6 小结 205
第9章 模拟和控制器 206
9.1 有限状态机概述 206
9.2 灯开关范例 207
9.3 将FSM转变成代码 208
9.4 模拟和控制器应用程序 209
9.5 控制器的关键安全方面 209
9.6 模拟简单计算机 211
9.7 小结 216
第10章 递归 217
10.1 什么是递归 217
10.2 怎样使用递归 220
10.3 熟悉递归 224
10.4 递归应用程序 233
10.5 小结 234
第二部分 数据结构 236
第11章 简单抽象数据结构 236
11.1 数组 237
11.2 单链表 262
11.3 双链表 272
11.4 循环链表 285
11.5 栈 293
11.6 队列 301
11.7 优先队列 304
11.8 双端队列 311
11.9 异型结构和对象树 318
11.10 小结 318
第12章 二叉搜索树 320
12.1 检查搜索算法 320
12.2 二叉树 321
12.3 平衡二叉树 337
12.4 小结 358
第13章 快速排序技术 359
13.1 分类数据 359
13.2 排序基础 360
13.3 有用的排序技术 365
13.4 归并策略 380
13.5 小结 404
第14章 多叉树 405
14.1 多叉树数据结构 405
14.2 如何使用多叉树 406
14.3 多叉树与二叉树及散列表的区别 418
14.4 小结 418
第15章 稀疏矩阵 419
15.1 什么是稀疏矩阵 419
15.2 为什么只用于稀疏数据 424
15.3 什么时候使用稀疏矩阵 426
15.4 构造稀疏矩阵 430
15.5 遍历稀疏矩阵 452
15.6 小结 453
第16章 图 454
16.1 定义图 454
16.2 环图和无环图 458
16.3 表示图 458
16.4 最短路径算法 480
16.5 最小生成树 496
16.6 最优化:最后的注解 504
16.7 小结 505
第17章 矩阵运算 508
17.1 矩阵是什么 508
第三部分 高级专题 508
17.2 简单的矩阵算术运算 509
17.3 使用C语言实现矩阵结构 510
17.4 从数组初始化 517
17.5 从文件获取矩阵 518
17.6 向stdout或文件写入MATRIX_T对象 521
17.7 相加和转置的完整实现 522
17.8 复杂矩阵概念 524
17.9 求解线性方程组 537
17.10 未来开发目标 541
17.11 其他方法 542
17.12 小结 542
第18章 数字信号处理 543
18.1 C语言满足实现世界 543
18.2 数据压缩 544
18.3 错误检查和校正 574
18.4 PID控制算法 587
18.5 小结 601
第19章 表达式分析和评价 602
19.1 问题陈述 602
19.2 答案陈述 603
19.3 波兰表示法 612
19.4 从普通形式转换到逆波兰形式 614
19.5 从波兰形式到评价的转换 650
19.6 分析错误的输入 655
19.7 小结 656
第20章 制作软件工具 657
20.1 优秀软件工具的特点 658
20.2 代码库 660
20.3 通用过滤器和工具 661
20.4 自动测试数据生成 672
20.5 代码生成器 677
20.6 小结 704
第21章 遗传算法 705
21.1 理解遗传算法 705
21.2 遣传的结构 706
21.3 突变操作 708
21.4 重组 708
21.5 选择 709
21.6 打开黑匣子 711
21.7 优化 711
21.8 应用实例:基因股票顾问 713
21.9 小结 719
第22章 跨平台开发:通信编程 720
22.1 规划移植 720
22.2 抽象层 721
22.3 套接字 722
22.4 跨平台应用程序 736
22.5 小结 757
第23章 使用C语言编写公共网关接口应用程序 758
23.1 什么是CGI 758
23.2 CGI入门 759
23.3 HTML输入技术 760
23.4 CGI环境 764
23.5 检索输入 768
23.6 分析查询字符串 771
23.7 样本应用程序:函数原型查寻 776
23.8 安全性考虑 781
23.9 小结 783
第24章 随机精度运算 784
24.1 误差怎样通过算术运算传播 785
24.2 溢出、下溢以及除零 787
24.3 计算次序 787
24.4 整数的长度 788
24.5 浮点数的长度 791
24.6 不要假设环境 797
24.7 极高和极低精度范例 798
24.8 表示极高精度的不同方法 799
24.9 字符串运算的样本程序 800
24.10 分数 804
24.11 通用运算例程 805
24.12 使用标准类型 807
24.13 选择自己的表示法 815
24.14 计算e的一万位 816
24.15 小结 820
25.1 自然语言的语法和语义 821
第25章 自然语言处理技术 821
25.2 自然语言输入的复杂性 828
25.3 自然语言输出的复杂性 840
25.4 小结 842
第26章 加密 843
26.1 评价安全性风险 843
26.2 为什么不生成新加密算法 845
26.3 选择加密算法 847
26.4 实现加密 855
26.5 小结 867
第27章 嵌入系统 868
27.1 使用C语言进行嵌入系统编程 869
27.2 嵌入C编程和ANSIC 874
27.3 实时操作系统 875
27.4 典型范例RTOS:RTEMS 875
27.5 小结 876
第28章 并行处理 877
28.1 基本概念 877
28.2 计算机和并行处理 877
28.3 使用C语言进行并行处理 880
28.1 小结 888
第29章 未来展望:C99 889
29.1 增加的新内容 889
29.2 我们失去了什么 897
29.3 改变之处 897
29.4 小结 898
附录 902
附录A GNU通用公共许可证 902
附录B 参考书目 906
附录C CD的内容 909