《C语言大全 第2版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)Herbert Schildt著;戴健鹏译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:1995
  • ISBN:7505327046
  • 页数:550 页
图书介绍:

目录 3

第1章 C语言概述 3

1.1 C语言的起源 3

1.2 C是中级语言 3

第一部分 C语言 3

1.3 C是结构化语言 4

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

1.5 编译和解释 6

1.6 C程序结构 7

1.6.1 库和链接 8

1.6.2 分别编译 9

1.6.3 编译C程序 9

1.6.4 C的内存映象 9

1.7 术语 10

2.1 五种基本数据类型 12

第2章 C表达式 12

2.2 修饰基本类型 12

2.3 标识符命名 14

2.4 变量 14

2.4.1 定义变量的位置 15

2.4.2 局部变量 15

2.4.3 形式参数 17

2.4.4 全局变量 18

2.5 修饰访问类型 19

2.5.1 const 19

2.5.2 volatile 20

2.6.1 extern 21

2.6 说明存储类型 21

2.6.2 static变量 22

2.6.3 static局部变量 22

2.6.4 static全部变量 23

2.6.5 register变量 24

2.7 变量初始化 25

2.8 常量 25

2.8.1 16进制和8进制常量 26

2.8.2 串常量 26

2.8.3 反斜线字符常量 26

2.9 操作符 27

2.9.1 赋值操作符 27

2.9.2 赋值中的类型转换 27

2.9.3 多重赋值 28

2.9.4 算术操作符 29

2.9.5 增量和减量 29

2.9.6 关系和逻辑操作符 30

2.9.7 位操作符 32

2.9.9 指针操作符&和* 35

2.9.8 问号(?)操作符 35

2.9.10 编译时操作符sizeof() 37

2.9.11 逗号(,)操作符 37

2.9.12 圆点(·)和箭头(→)操作符 37

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

2.9.14 优先级小结 38

2.10 表达式 38

2.10.1 求值顺序 39

2.10.2 表达式中的类型转换 39

2.10.3 强制类型转换 40

2.10.4 间隔和括号 41

2.10.5 C的紧凑表达手段 41

3.2 选择语句 42

第3章 程序控制语句 42

3.1 C的真值和假值 42

3.2.1 if 43

3.2.3 if-else-if梯次 44

3.2.2 嵌套if 44

3.2.4 代替if的? 46

3.2.6 switch 48

3.2.5 条件表达式 48

3.3.1 for循环 51

3.3 循环语句 51

3.3.2 for循环的变形 52

3.3.3 无限循环 55

3.3.5 while循环 56

3.3.4 无循环体的循环 56

3.3.6 do-whilw循环 58

3.4 跳转语句 59

3.4.1 return语句 59

3.4.2 goto语句 59

3.4.3 break语句 60

3.4.4 exit()函数 61

3.4.5 continue语句 62

3.5 表达式语句 62

3.6 块语句 63

第4章 数组和串 64

4.1 一维数组 64

4.3 向函数传一维数组 65

4.2 指向数组的指针 65

4.4 串 67

4.5 二维数组 68

4.5.1 字符串数组 71

4.7 指针的下标操作 72

4.6 多维数组 72

4.8 数组初始化 74

4.8.1 无尺寸数组初始化 75

4.9 一担挑游戏 76

第5章 指针 79

5.1 什么是指针 79

5.2 指针变量 79

5.3 指针操作符 80

5.4 指针表达式 81

5.4.1 指针赋值 81

5.4.2 指针算术 81

5.4.3 指针比较 82

5.5 指针和数组 84

5.5.1 指针数组 84

5.6 多级间址 85

5.7 指针初始化 86

5.8 函数指针 87

5.9 动态分配函数 89

5.9.1 动态数组 90

5.10 与指针有关的问题 93

第6章 函数 96

6.1 函数的一般形式 96

6.2 函数的作用域规则 97

6.3 函数的变元 97

6.3.1 值调用和引用调用 98

6.3.2 引用调用 98

6.3.3 用数组调用 99

6.4 main()的变元argc和argv 102

6.5 返回语句 104

6.5.1 从函数中返回 104

6.5.2 返回值 105

6.6 返回非整值的函数 106

6.7 函数原型 108

6.8 指针型函数 109

6.9 void型函数 109

6.10 main()的返回值 110

6.11 递归 110

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

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

6.14.1 参数和通用程序 113

6.14 实现问题 113

6.14.2 效率 113

6.15 库和文件 113

6.15.1 独立文件 114

6.15.2 库 114

6.15.3 程序文件的最佳尺寸 114

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

7.1 结构 115

7.1.1 引用结构元素 117

7.1.2 结构赋值 117

7.2 结构数组 118

7.2.1 通信录实例 118

7.3 向函数传递结构 123

7.3.1 向函数传结构元素 123

7.3.2 向函数传全结构 124

7.4.2 使用结构措针 125

7.4 结构指针 125

7.4.1 声明结构指针 125

7.6 位域 127

7.5 结构中的数组和结构 127

7.7 联合 129

7.8 枚举 131

7.10 typedef 133

7.9 用sizeof确保可移植性 133

8.1 读写字符 135

第8章 控制台I/O 135

8.1.2 代替getchar()的函数 136

8.1.1 getchar()的问题 136

8.2 读写串 137

8.4.1 打印字符和串 139

8.4.2 打印数值 139

8.3 格式化控制台I/O 139

8.4 printf() 139

8.4.3 显示地址 141

8.4.6 最小域宽修饰符 141

8.4.4 格式说明符%n 141

8.4.5 格式修饰符 141

8.4.7 精度修饰符 143

8.4.8 对齐输出 143

8.4.9 处理其他数据类型 143

8.4.10 修饰符*和# 144

8.5 scanf() 144

8.5.1 格式说明符 145

8.5.2 输入数值 145

8.5.3 输入无符号整数 145

8.5.4 用scanf()读单字符 146

8.5.6 输入地址 146

8.5.5 用scanf()读串 146

8.5.7 格式符%n 147

8.5.8 使用扫描集合 147

8.5.9 过滤多余空白符 147

8.5.13 忽略输入 148

8.5.10 控制串中的非空白符 148

8.5.11 必须向scanf()传地址 148

8.5.12 格式修饰符 148

第9章 文件I/O 150

9.2 流和文件 150

9.1 ANSI C的I/O和UNIX C的I/O 150

9.4 文件 151

9.3.2 二进制流 151

9.3.1 文本流 151

9.3 流 151

9.5.1 文件指针 152

9.5 文件系统基础 152

9.5.2 打开文件 153

9.5.5 读字符 154

9.5.4 写字符 154

9.5.3 关闭文件 154

9.5.6 使用fopen()、gete()、ptuc()和felose() 155

9.5.7 使用feof() 156

9.5.8 用fputs()和fgets()处理串 157

9.5.10 ferror() 158

9.5.9 rewind() 158

9.5.12 对流清仓 160

9.6 fread()和fwrite() 160

9.5.11 删除文件 160

9.6.1 使用fread()和fwrite() 161

9.7 fseek()和随机存取I/O 165

9.8 fprintf()和fscanf() 166

9.9 标准流 167

9.9.1 控制台和文件I/O的关系 168

9.9.2 用freopen()重定向标准流 168

9.10 类UNIX文件系统 169

9.10.1 open() 170

9.10.3 creat() 170

9.10.2 close() 170

9.10.4 read和write 171

9.10.5 unlink() 172

9.10.6 用lseek()随机存取 172

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

10.1 C预处理程序 174

10.2 #define 174

10.4 include 176

10.3 error 176

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

10.5 条件编译指令 177

10.5.2 #ifdef和#ifndef 179

10.6 #undef 179

10.7 #line 180

10.8 #pragma 180

10.9 预处理操作符#和## 181

10.10 预定义宏 181

10.11 注解 182

第二部分 C标准库 185

第11章 链接、库和包含文件 185

11.1 链接程序 185

11.1.1 分别编译 185

11.1.2 可重定位代码 186

11.1.3 覆盖链接 187

11.3 包含文件 188

11.2.1 库和目标码文件 188

11.2 C标准库 188

11.3.1 包含文件中的宏 189

11.4 重新定义库函数 190

第12章 I/O函数 191

第13章 串和字符函数 231

第14章 数学函数 251

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

第16章 动态分配函数 297

第17章 显示和图形函数 311

第18章 杂函数 333

第19章 排序和查找 355

第三部分 算法和应用 355

19.1 排序 355

19.1.1 排序算法的分类 355

19.1.2 排序算法的评价 356

19.1.3 气泡浮起排序 356

19.1.4 选择排序 359

19.1.5 插入排序 360

19.1.6 改进的排序 361

19.1.7 谢尔排序 361

19.1.8 快速排序 363

19.2 选择排序算法 365

19.3 对其它数据结构排序 365

19.3.1 对串排序 365

19.3.2 对结构排序 366

19.4 对随机存取的磁盘文件排序 367

19.5 查找 369

19.5.1 查找方法 369

19.5.2 顺序查找 369

19.5.3 对分查找 370

20.1 队列 371

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

20.2 循环队列 375

20.3 堆栈 377

20.4 链表 381

20.5 单向链表 381

20.6 双向链表 385

20.7 通信录实例 388

20.8 二叉树 393

第21章 稀疏数组 399

21.1 链表方法 399

21.1.1 链表方法的性能分析 402

21.2 二叉树方法 402

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

21.3 指针数组方法 404

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

21.4 散列方法 406

24.4.1 散列方法的性能分析 409

21.5 决策 409

22.1 表达式 411

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

22.2 表达式分解 412

22.3 表达式分析 414

22.4 简单分析程序 415

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

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

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

23.1 表示和术语 427

23.2 组合爆炸 428

23.3 搜索技术 429

23.4 评价搜索技术 429

23.5 用图表示问题 431

23.6 深度优先搜索 432

23.7 宽度优先搜索 439

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

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

23.8 启发式搜索 441

23.9 登山搜索 442

23.9.1 登山搜索的性能分析 446

23.10 最小代价搜索 446

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

23.11 选择搜索方法 448

23.12 寻找多重解 448

23.12.1 路径剪除 448

23.12.2 结点摘除 449

23.13 寻找“最优”解 453

23.14 一个例子 457

24.1 8086处理器系列 461

第24章 使用系统资源 461

24.2 8086中断和DOS 462

24.3 通过BIOS使用系统资源 464

24.3.1 改变显示方式 467

24.3.2 清显示屏 468

24.3.3 光标定位 468

24.3.4 使用PC键盘的扫描码 469

24.4 用DOS调用系统功能 470

24.4.1 检查键盘状态 472

24.4.3 读/写串口 472

24.4.2 使用打印机 472

24.5 一些建议 473

24.4.4 列目录 473

25.1 方式和调色板 474

第25章 图形 474

25.2 写象素 475

25.2.1 用ROM-BIOS写象素 475

25.2.2 直接写象素 476

25.3 画线 478

25.4 框和填充 481

25.5 组合实例 483

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

第26章 汇编语言子程序接口 493

26.1 汇编语言接口 493

26.2 C编译程序的调用规则 494

26.3 Microsoft C的调用规则 494

26.4 生成汇编码函数 494

26.4.1 简单汇编码程序 495

26.4.2 参引调用实例 499

26.4.3 代码和数据段的大模式 500

26.5 生成汇编码骨架 501

26.6 使用asm 504

26.7 使用汇编码的时机 504

第27章 C语言软件工程 506

27.1 自顶向下设计 506

27.1.1 构造程序草案 506

27.1.2 选择数据结构 507

27.2 抗毁函数 508

27.4.1 LINT 509

27.4 LINT和MAKE 509

27.3 函数原型 509

27.4.2 MAKE 510

第28章 效率、移植和调试 514

28.1 效率 514

28.1.1 增量和减量操作符 514

28.1.2 寄存器变量 515

28.1.3 指针和数组索引 516

28.1.4 函数的用法 517

28.2 移植 519

28.2.1 使用#define 519

28.2.2 对操作系统的依赖 520

28.2.3 数据尺寸的差异 520

28.3 调试 521

28.3.1 处理顺序错 521

28.3.2 指针问题 522

28.3.3 奇异语法错 523

28.3.5 越界错 524

28.3.4 出界错 524

28.3.6 函数原型遗漏 525

28.3.7 变元错 526

28.3.8 堆-栈冲突 527

28.3.9 一般调试理论 527

28.4 程序维护的艺术 528

28.4.1 改错 528

28.4.2 保护源代码 529

第五部分 C的新方向C++ 533

第29章 C++ 533

29.1 数据抽象 533

29.2 对象 534

29.3 注释 535

29.4 类 535

29.4.1 声明成员函数 536

29.4.2 构造函数和析构函数 538

29.4.3 友元 540

29.5 函数重载 541

29.6 操作符重载 542

29.6.1 数据抽象和操作符重载 544

29.7 C++的其它特性 545

29.7.1 new和delete 545

29.7.2 inline 545

附录 ANSI标准C和K&R C之间的差别 547

A.1 删除关键字 547

A.2 扩充关键字 547

A.3 结构传递 549

A.4 函数原型 549

A.5 函数的现代声明和经典声明 549

A.6 标准库 550

A.7 扩充预处理指令 550