《最新C语言精华 第3版》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)(H.希尔特)(Herbert Schildt)著;王子恢等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:1997
  • ISBN:7505339745
  • 页数:562 页
图书介绍:

第一部分 C语言 1

第1章 C语言概述 1

1.1 C语言的起源 1

1.2 C是中级语言 1

目录 1

1.3 C是结构化语言 2

1.4 C是面向程序员的语言 4

1.5 编译和解释 4

1.6 C程序结构 5

1.7 库和链接 6

1.8 分别编译 7

1.9 编译C程序 7

1.11 术语 8

1.10 C的内存映象 8

第2章 C表达式 9

2.1 五种基本数据类型 9

2.2 修饰基本类型 9

2.3 标识符命名 10

2.4 变量 11

2.4.1 定义变量的位置 11

2.4.2 局部变量 11

2.4.3 形式参数 14

2.4.4 全局变量 15

2.5 修饰访问类型 16

2.5.1 const 16

2.6 说明存储类型 17

2.5.2 volatile 17

2.6.1 extern 18

2.6.2 static变量 19

2.6.3 register变量 21

2.7 变量初始化 22

2.8 常量 22

2.8.1 16进制和8进制常量 23

2.8.2 串常量 23

2.8.3 反斜线字符常量 23

2.9 操作符 24

2.9.1 赋值操作符 24

2.9.2 赋值中的类型转换 24

2.9.4 算术操作符 25

2.9.3 多重赋值 25

2.9.5 增量和减量 26

2.9.6 关系和逻辑操作符 27

2.9.7 位操作符 29

2.9.8 问号(?)操作符 32

2.9.9 指针操作符&和* 32

2.9.10 编译时操作符sizeof() 33

2.9.11 逗号(,)操作符 34

2.9.12 圆点(·)和箭头(—>)操作符 34

2.9.13 用作操作符的圆括号和方括号 35

2.9.14 优先级小结 35

2.10 表达式 35

2.10.2 表达式中的类型转换 36

2.10.1 求值顺序 36

2.10.3 强制类型转换 37

2.10.4 间隔和括号 37

2.10.5 C的紧凑表达手段 38

第3章 程序控制语句 39

3.1 C的真值和假值 39

3.2 选择语句 39

3.2.1 if 39

3.2.2 嵌套if 40

3.2.3 if-else-if梯次 41

3.2.4 代替if的? 42

3.2.5 条件表达式 44

3.2.6 switch 45

3.2.7 嵌套switch语句 48

3.3 循环语句 48

3.3.1 for循环 48

3.3.2 for循环的变形 49

3.3.3 无限循环 52

3.3.4 无循环体的循环 53

3.3.5 while循环 53

3.3.6 do-whilw循环 55

3.4 跳转语句 55

3.4.1 return语句 56

3.4.2 goto语句 56

3.4.3 break语句 56

3.4.4 exit()函数 57

3.4.5 continue语句 58

3.5 表达式语句 59

3.6 块语句 60

第4章 数组和串 61

4.1 一维数组 61

4.2 指向数组的指针 62

4.3 向函数传一维数组 62

4.4 串 63

4.5 二维数组 65

4.5.1 字符串数组 68

4.6 多维数组 69

4.7 指针的下标操作 69

4.8 数组初始化 71

4.8.1 无尺寸数组初始化 72

4.9 一担挑游戏 73

第5章 指针 76

5.1 什么是指针 76

5.2 指针变量 76

5.3 指针操作符 77

5.4 指针表达式 77

5.4.1 指针赋值 78

5.4.2 指针算术 78

5.4.3 指针比较 79

5.5 指针和数组 80

5.5.1 指针数组 81

5.6 多级间址 82

5.7 指针初始化 83

5.8 函数指针 84

5.9 动态分配函数 86

5.9.1 动态分配的数组 87

5.10 与指针有关的问题 89

第6章 函数 92

6.1 函数的一般形式 92

6.2 函数的作用域规则 92

6.3 函数的变元 93

6.3.1 值调用和引用调用 93

6.3.2 引用调用 94

6.3.3 用数组调用 94

6.4 main()的变元argc和argv 98

6.5 返回语句 100

6.5.1 从函数中返回 100

6.5.2 返回值 101

6.6 返回非整值的函数 102

6.7 函数原型 103

6.8 返回指针 104

6.9 void型函数 105

6.10 main()的返回值 106

6.11 递归 106

6.12 参数类型及数量可变的函数 107

6.13 参数声明的经典方法和现代方法 108

6.15.1 独立文件 109

6.15 库和文件 109

6.14.1 参数和通用程序 109

6.14.2 效率 109

6.14 实现问题 109

6.15.2 库 110

6.15.3 程序文件的最佳大小 110

第7章 结构、联合、枚举和用户定义类型 111

7.1 结构 111

7.1.1 引用结构成员 112

7.1.2 结构赋值 113

7.2 结构数组 113

7.2.1 通信录实例 114

7.3 向函数传递结构 119

7.3.1 向函数传结构成员 119

7.3.2 向函数传全结构 120

7.4 结构指针 121

7.4.1 声明结构指针 121

7.4.2 使用结构措针 121

7.5 结构中的数组和结构 124

7.6 位域 124

7.7 联合 126

7.8 枚举 128

7.9 用sizeof确保可移植性 129

7.10 typedef 130

第8章 控制台I/O 132

8.1 读写字符 132

8.1.2 代替getchar()的函数 133

8.1.1 getchar()的问题 133

8.2 读写串 134

8.3 格式化控制台I/O 136

8.4 printf() 136

8.4.1 打印字符和串 136

8.4.2 打印数值 136

8.4.3 显示地址 138

8.4.4 格式说明符%n 138

8.4.5 格式修饰符 138

8.4.6 最小域宽修饰符 138

8.4.7 精度修饰符 140

8.4.8 对齐输出 140

8.4.9 处理其他数据类型 140

8.5.1 格式说明符 141

8.4.10 修饰符*和# 141

8.5 scanf() 141

8.5.2 输入数值 142

8.5.3 输入无符号整数 142

8.5.4 用scanf()读单字符 142

8.5.5 用scanf()读串 143

8.5.6 输入地址 143

8.5.7 格式符%n 143

8.5.8 使用扫描集合 144

8.5.9 过滤多余空白符 144

8.5.10 控制串中的非空白符 144

8.5.13 忽略输入 145

8.5.12 格式修饰符 145

8.5.11 必须向scanf()传地址 145

第9章 文件I/O 146

9.1 ANSIC的I/O和UNIX C的I/O 146

9.2 C与C++I/O 146

9.3 流和文件 147

9.4 流 147

9.4.1 文本流 147

9.4.2 二进制流 147

9.5 文件 147

9.6 文件系统基础 148

9.6.1 文件指针 148

9.6.2 打开文件 149

9.6.5 读字符 150

9.6.3 关闭文件 150

9.6.4 写字符 150

9.6.6 使用fopen()、getc()、ptuc()和fclose() 151

9.6.7 使用feof() 152

9.6.8 用fputs()和fgets()处理串 153

9.6.9 rewind() 154

9.6.10 ferror() 155

9.6.11 删除文件 156

9.6.12 对流清仓 157

9.7 fread()和fwrite() 157

9.7.1 使用fread()和fwrite() 157

9.8 fseek()和随机存取I/O 162

9.9 fprintf()和fscanf() 163

9.10 标准流 164

9.10.1 控制台和文件I/O的关系 165

9.10.2 用freopen()重定向标准流 165

9.11 类UNIX文件系统 166

9.11.1 open() 167

9.11.2 creat() 167

9.11.3 close() 167

9.11.4 read和write 168

9.11.5 unlink() 169

9.11.6 用lseek()随机存取 169

10.1 C预处理程序 171

10.2 #define 171

第10章 C预处理程序和注释 171

10.2.1 定义类函数宏 172

10.3 #error 173

10.4 #include 173

10.5 条件编译指令 174

10.5.1 #if、#else、#elif和#endif 174

10.5.2 #ifdef和#ifndef 176

10.6 #undef 177

10.7 使用defined 177

10.8 #line 177

10.9 #pragma 178

10.10 预处理操作符#和## 178

10.12 注解 179

10.11 预定义宏 179

第二部分 C标准库 181

第11章 链接、库和首标文件 181

11.1 链接程序 181

11.1.1 分别编译 181

11.1.2 可重定位代码 182

11.1.3 覆盖链接 183

11.1.4 DLL链接 184

11.2 C标准库 184

11.2.1 库和目标码文件 184

11.3 首标文件 185

11.4 重新定义库函数 186

11.3.1 首标文件中的宏 186

第12章 I/O函数 187

第13章 串和字符函数 226

第14章 数学函数 245

第15章 时间、日期和其它与操作系统有关的函数 256

第16章 动态分配函数 290

第17章 显示和图形函数 305

17.1 PC显示模式 305

第18章 杂函数 327

第三部分 算法和应用 347

第19章 排序和查找 347

19.1 排序 347

19.1.1 排序算法的分类 347

19.1.3 气泡浮起排序 348

19.1.2 排序算法的评价 348

19.1.4 选择排序 351

19.1.5 插入排序 352

19.1.6 改进的排序 353

19.1.7 谢尔排序 353

19.1.8 快速排序 355

19.2 选择排序算法 357

19.3 对其它数据结构排序 357

19.3.1 对串排序 357

19.3 2 对结构排序 358

19.4 对随机访问的磁盘文件排序 359

19.5.3 对分查找 362

19.5.2 顺序查找 362

19.5.1 查找方法 362

19.5 查找 362

第20章 队列、堆栈、链表和树 364

20.1 队列 364

20.2 循环队列 368

20.3 堆栈 370

20.4 链表 374

20.5 单向链表 374

20.6 双向链表 378

20.7 通信录实例 382

20.8 二叉树 387

第21章 稀疏数组 394

21.1 链表方法 394

21.2 二叉树方法 397

21.1.1 链表方法的性能分析 397

21.2.1 二叉树方法的性能分析 399

21.3 指针数组方法 399

21.3.1 指针数组方法的性能分析 401

21.4 散列方法 401

24.4.1 散列方法的性能分析 404

21.5 决策 405

第22章 表达式分析和求值 406

22.1 表达式 406

22.2 表达式分解 407

22.3 表达式分析 409

22.4 简单分析程序 410

22.5 能处理变量的分析程序 415

22.6 递归下降分析中的语法检查 421

第23章 人工智能问题求解 423

23.1 表示和术语 423

23.2 组合爆炸 424

23.3 搜索技术 425

23.4 评价搜索技术 426

23.5 用图表示问题 426

23.6 深度优先搜索 428

23.6.1 深度优先算法的性能分析 436

23.7 宽度优先搜索 436

23.7.1 宽度优先搜索的性能分析 437

23.8 启发式搜索 437

23.9 登山搜索 438

23.9.1 登山搜索的性能分析 442

23.10 最小代价搜索 443

23.10.1 最小代价搜索的性能分析 444

23.11 选择搜索方法 445

23.12 寻找多重解 445

23.12.1 路径剪除 445

23.12.2 结点摘除 446

23.13 寻找“最优”解 451

23.14 一个例子 456

第24章 构造Windows 95框架 459

24.1 Windows 95程序设计概貌 459

24.2 Windows 95如何与用户的程序交互 460

24.1.4 菜单、工具条、状态条及对话框 460

24.1.3 位图 460

24.1.2 鼠标 460

24.1.1 桌面模式 460

24.3 Windows 95使用抢先式多任务方法 461

24.4 Win32 API:Windows API 461

24.5 窗口部件 462

24.6 Windows 95应用程序基础 463

24.6.1 WinMain() 463

24.6.2 窗口函数 463

24.6.3 窗口类 463

24.6.4 消息循环 463

24.6.5 Windows数据类型 464

24.7 Windows 95框架 464

24.7.1 定义窗口类 467

24.7.2 生成窗口 468

24.7.3 消息循环 470

24.8 窗口函数 471

24.9 使用定义文件 471

24.10 命名惯例 472

第四部分 C语言软件开发 473

第25章 汇编语言子程序接口 473

25.1 汇编语言接口 473

25.2 C编译程序的调用规则 474

25.3 Microsoft C/C++的调用规则 474

25.4 生成汇编码函数 474

25.4.1 简单汇编码程序 475

25.4.2 参数调用实例 479

25.4.3 代码和数据段的大模式 481

25.5 生成汇编码框架 482

25.6 使用asm 484

25.7 使用汇编码的时机 484

第26章 C语言软件工程 486

26.1 自顶向下设计 486

26.1.1 构造程序草案 486

26.1.2 选择数据结构 487

26.2 抗毁函数 488

26.3 使用MAKE 489

26.3.1 使用MAKE中的宏 492

26.4 使用集成的开发环境 493

27.1.1 增量和减量操作符 494

第27章 效率、移植和调试 494

27.1 效率 494

27.1.2 寄存器变量 495

27.1.3 指针和数组索引 497

27.1.4 函数的用法 498

27.2 移植 501

27.2.1 使用#define 501

27.2.2 对操作系统的依赖 502

27.2.3 数据大小的差异 502

27.3 调试 503

27.3.1 处理顺序错 503

27.3.2 指针问题 503

27.3.3 奇异语法错 505

27.3.5 越界错 506

27.3.4 出界错 506

27.3.6 函数原型遗漏 507

27.3.7 变元错 508

27.3.8 堆-栈冲突 508

27.3.9 一般调试理论 509

27.4 程序维护的艺术 509

27.4.1 改错 510

27.4.2 保护源代码 510

第五部分 C解释程序 511

第28章 C解释程序 511

28.1 解释程序的现实重要性 511

28.2 Little C说明 512

28.3 解释结构语言 513

28.2.1 一个重要的Little C约束条件 513

28.4 C的非正式理论 514

28.4.1 C表达式 515

28.4.2 求表达式的值 515

28.5 表达式分析程序 516

28.5.1 将源代码化为部件 516

28.5.2 Little C递归下降分析程序 521

28.6 Little C解释程序 531

28.6.1 解释程序预扫 532

28.6.2 main()函数 534

28.6.3 interp_block()函数 535

28.6.4 处理局部变量 547

28.6.5 调用用户定义的函数 548

28.6.6 为变量赋值 550

28.6.7 执行if语句 551

28.6.8 处理while循环 552

28.6.9 处理do-while循环 553

28.6.10 for循环 553

28.7 Little C库函数 554

28.8 编译和链接Little C解释程序 557

28.9 演示Little C 557

28.10 改进Little C 560

28.11 扩充Little C 561

28.11.1 增加新的C特征 561

28.11.2 增加附加特征 562