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

  • 购买积分:16 如何计算积分?
  • 作  者:(美)赫伯特·希尔特(Herbert Schildt)著;王子恢,戴健鹏等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2001
  • ISBN:7505369156
  • 页数:541 页
图书介绍:《C语言大全(第四版)》是根据国际著名的C语言专家Herbert Shchildt的原著翻译的。这是一本C语言的百科全书,其中包括C的命令、功能、编程和应用等方面的内容,是集专家及C语言编程人员的多方面专门经验之作。全书共分6部分,共29章。第一部分详细讨论了关键字、预处理、指令和C语言特性,内容包括表达式、程序控制语句、数组和串、指针、函数、数据类型、结构、联合、枚举和用户自定义类型、控制台I/O、文件I/O和预处理等;第二部分详细介绍了新的C99标准,并将C89和C99进行了仔细对比;第三部分详细介绍了C标准程序库,包括各种环境下的I/O函数、串和字符函数、数学函数、系统函数、动态分配函数、工具函数、宽字符函数和C99增加的库函数等;第四部分介绍算法和应用程序,包括排序和搜索、队列、堆栈、链表和树、稀疏数组、表达式剖析和求值、人工智能问题求解等;第五部分详细讨论了Windows 2000框架的构造,并用实例讨论了C软件的开发技术,包括效率、移植和调试等软件工程专题;第六部分介绍C解释程序。本书内容全面,叙述清晰,为广大PC机用户程序开发人员提供了一部很有价值的工具书,也可作计算机应

第一部分 C语言基础 1

第1章 C语言概述 1

1.1 C语言的简要历史 1

1.2 C是中级语言 2

1.3 C是结构化语言 2

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

1.5 编译和解释 4

1.6 C程序的格式 4

1.7 库和链接 6

1.8 分别编译 7

1.9 编译C程序 7

1.10 C的内存映像 7

1.11 C与C++ 7

1.12 术语 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 全局变量 14

2.4.5 C语言的四个域 15

2.5 类型修饰符 16

2.5.1 const 16

2.5.2 volatile 17

2.6 存储类型说明符 17

2.6.1 extern 18

2.6.2 static变量 19

2.6.3 register变量 20

2.7 变量初始化 21

2.8 常量 22

2.8.1 16进制和8进制常量 22

2.8.2 串常量 23

2.8.3 反斜线字符常量 23

2.9 操作符 23

2.9.1 赋值操作符 23

2.9.2 赋值中的类型转换 24

2.9.3 多重赋值 25

2.9.4 复合赋值 25

2.9.5 算术操作符 25

2.9.6 增量和减量 26

2.9.7 关系和逻辑操作符 27

2.9.8 位操作符 28

2.9.9 问号(?)操作符 31

2.9.10 指针操作符 和? 32

2.9.11 编译时操作符sizeof() 33

2.9.12 逗号(,)操作符 33

2.9.13 圆点(.)和箭头(→)操作符 34

2.9.14 []和()操作符 34

2.9.15 优先级小结 34

2.10 表达式 35

2.10.1 求值顺序 35

2.10.2 表达式中的类型转换 35

2.10.3 强制类型转换 36

2.10.4 间隔和括号 36

第3章 语句 38

3.1 C的真值和假值 38

3.2 选择语句 38

3.2.1 if语句 38

3.2.2 嵌套if语句 39

3.2.3 if-else-if梯次 40

3.2.4 代替if的问号(?) 42

3.2.5 条件表达式 44

3.2.6 switch 44

3.2.7 嵌套switch语句 46

3.3 重复(Iteration)语句 47

3.3.1 for循环 47

3.3.2 for循环的变形 48

3.3.3 无限循环 51

3.3.4 无循环体的循环 51

3.3.5 在for循环中声明变量 52

3.3.6 while循环 52

3.3.7 do-while循环 54

3.4 跳转语句 55

3.4.1 return语句 55

3.4.2 goto语句 55

3.4.3 break语句 56

3.4.4 exit()函数 57

3.4.5 continue语句 58

3.5 表达式语句 59

3.6 块语句 59

第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

4.10 一担挑游戏 73

第5章 指针 77

5.1 什么是指针 77

5.2 指针变量 77

5.3 指针操作符 77

5.4 指针表达式 78

5.4.1 指针赋值 78

5.4.2 指针转换 79

5.4.3 指针算术操作 80

5.4.4 指针比较 80

5.5 指针和数组 82

5.5.1 指针数组 83

5.6 多级间址 83

5.7 指针初始化 84

5.8 函数指针 86

5.9 动态分配函数 89

5.9.1 动态分配的数组 90

5.10 由restrict修饰的指针 92

5.11 与指针有关的问题 92

第6章 函数 96

6.1 函数的一般形式 96

6.2 理解函数的作用域规则 96

6.3 函数的变元 96

6.3.1 值调用和引用调用 97

6.3.2 引用调用 97

6.3.3 用数组调用 99

6.4 main()的变元argc和argv 101

6.5 返回语句 103

6.5.1 从函数中返回 103

6.5.2 返回值 104

6.5.3 返回指针 106

6.5.4 void型函数 106

6.6 main()的返回值 107

6.7 递归 107

6.8 函数原型 108

6.8.1 老式风格的函数声明 110

6.8.2 标准的库函数原型 110

6.9 定义可变长度的参数表 111

6.10 “隐含的int”规则 111

6.11 参数声明的老式方法和现代方法 112

6.12 inline关键字 112

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

7.1 结构 114

7.1.1 存取结构成员 115

7.1.2 结构赋值 116

7.2 结构数组 116

7.2.1 通信录实例 117

7.3 向函数传递结构 123

7.3.1 向函数传结构成员 123

7.3.2 向函数传递全结构 124

7.4 结构指针 125

7.4.1 定义结构指针 125

7.4.2 使用结构指针 125

7.5 结构中的数组和结构 128

7.6 联合 128

7.7 位域 130

7.8 枚举 132

7.9 C与C++之间的重要差别 133

7.10 用sizeof确保可移植性 134

7.11 typedef 135

第8章 控制台I/O 136

8.1 读写字符 136

8.1.1 getchar()的问题 137

8.1.2 代替getchar()的函数 137

8.2 读写串 138

8.3 格式化控制台I/O 140

8.4 printf() 140

8.4.1 打印字符和串 141

8.4.2 打印数值 141

8.4.3 显示地址 142

8.4.4 格式说明符%n 143

8.4.5 格式修饰符 143

8.4.6 最小域宽说明符 143

8.4.7 精度说明符 145

8.4.8 对齐输出 145

8.4.9 处理其他数据类型 146

8.4.10 修饰符?和 146

8.5 scanf() 147

8.5.1 格式说明符 147

8.5.2 输入数值 147

8.5.3 输入无符号整数 148

8.5.4 用scanf()读单字符 148

8.5.5 用scanf()读串 148

8.5.6 输入地址 149

8.5.7 格式符%n 149

8.5.8 使用扫描集合 149

8.5.9 过滤多余空白符 150

8.5.10 控制串中的非空白符 150

8.5.11 必须向scanf()传地址 150

8.5.12 格式修饰符 150

8.5.13 忽略输入 151

第9章 文件I/O 152

9.1 C与C++ I/O 152

9.2 标准C的I/0和UNIX C的I/O 152

9.3 流和文件 152

9.4 流 152

9.4.1 文本流 152

9.4.2 二进制流 153

9.5 文件 153

9.6 文件系统基础 153

9.6.1 文件指针 154

9.6.2 打开文件 154

9.6.3 关闭文件 155

9.6.4 写字符 156

9.6.5 读字符 156

9.6.6 使用fopem()、getc()、putc()和fclose() 156

9.6.7 使用feof() 158

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

9.6.9 rewind() 160

9.6.10 ferror() 160

9.6.11 删除文件 162

9.6.12 对流清仓 163

9.7 fread()和fwrite() 163

9.7.1 使用fread()和fwrite() 163

9.7.2 通信录实例 164

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

9.9 fprintf()和fscanf() 171

9.10 标准流 172

9.10.1 控制台I/O的连接 173

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

第10章 预处理程序和注释 175

10.1 预处理程序 175

10.2 #define 175

10.2.1 定义类函数宏 176

10.3 #error 177

10.4 #include 177

10.5 条件编译指令 177

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

10.5.2 #ifdef和#ifndef 180

10.6 #undef 180

10.7 使用defined 181

10.8 #line 181

10.9 #pragma 182

10.10 预处理操作符#和 182

10.11 预定义宏 183

10.12 注释 183

10.12.1 单行注释 184

第二部分 C99标准 185

第11章 C99 185

11.1 C89与C99概述 185

11.1.1 增加的特性 185

11.1.2 删除的特性 186

11.1.3 修改的特性 186

11.2 由restrict修饰的指针 186

11.3 inline 187

11.4 新的内置数据类型 188

11.4.1 _Bool 188

11.4.2 _ Complex和_Imaginary 188

11.4.3 long long int类型 189

11.5 对数组的增强 189

11.5.1 变长数组 189

11.5.2 类型修饰符在数组声明中的应用 189

11.6 单行注释 190

11.7 分散代码和声明 190

11.8 预处理程序的修改 190

11.8.1 变元表 190

11.8.2 _Pragma操作符 191

11.8.3 内置的编译指令(Pragmas) 191

11.8.4 增加的内置宏 191

11.9 在for循环中声明变量 191

11.10 复合赋值 192

11.11 柔性数组结构成员 193

11.12 指定的初始化符 193

11.13 printf()和scanf()函数系列的新增内容 194

11.14 C99中的新库 194

11.15 __func__预定义标识符 194

11.16 放宽的转换限制 195

11.17 不再支持隐含的int 195

11.18 删除了隐含的函数声明 196

11.19 对返回值的约束 196

11.20 扩展的整数类型 196

11.21 对整数类型提升规则的修改 197

第三部分 C标准库 199

第12章 链接、库和头部 199

12.1 链接程序 199

12.1.1 分别编译 199

12.1.2 可重定位代码与绝对代码 200

12.1.3 覆盖链接 200

12.1.4 DLL链接 200

12.2 C标准库 201

12.2.1 库和目标码文件 201

12.3 头部 201

12.3.1 头部文件中的宏 202

12.4 重新定义库函数 202

第13章 I/O函数 204

13.1 clearerr 204

13.1.1 例子 204

13.1.2 有关函数 205

13.2 fclose 205

13.2.1 例子 205

13.2.2 有关函数 206

13.3 feof 206

13.3.1 例子 206

13.3.2 有关函数 206

13.4 ferror 206

13.4.1 例子 207

13.4.2 有关函数 207

13.5 fflush 207

13.5.1 例子 207

13.5.2 有关函数 207

13.6 fgetc 208

13.6.1 例子 208

13.6.2 有关函数 208

13.7 fgetpos 208

13.7.1 例子 209

13.7.2 有关函数 209

13.8 fgets 209

13.8.1 例子 209

13.8.2 有关函数 210

13.9 fopen 210

13.9.1 例子 211

13.9.2 有关函数 211

13.10 fprintf 211

13.10.1 例子 211

13.10.2 有关函数 212

13.11 fputc 212

13.11.1 例子 212

13.11.2 有关函数 212

13.12 fputs 212

13.12.1 例子 212

13.12.2 有关函数 213

13.13 fread 213

13.13.1 例子 213

13.13.2 有关函数 214

13.14 freopen 214

13.14.1 例子 214

13.14.2 有关函数 215

13.15 fscanf 215

13.15.1 例子 215

13.15.2 有关函数 215

13.16 fseek 215

13.16.1 例子 216

13.16.2 有关函数 216

13.17 fsetpos 216

13.17.1 例子 216

13.17.2 有关函数 217

13.18 ftell 217

13.18.1 例子 217

13.18.2 有关函数 217

13.19 fwrite 217

13.19.1 例子 217

13.19.2 有关函数 218

13.20 getc 218

13.20.1 例子 218

13.20.2 有关函数 219

13.21 getchar 219

13.21.1 例子 219

13.21.2 有关函数 219

13.22 gets 219

13.22.1 例子 220

13.22.2 有关函数 220

13.23 perror 220

13.23.1 例子 220

13.24 printf 221

13.24.1 C99为printf()增加的格式修饰符 222

13.24.2 例子 223

13.24.3 有关函数 223

13.25 putc 223

13.25.1 例子 223

13.25.2 有关函数 223

13.26 putchar 223

13.26.1 例子 224

13.26.2 有关函数 224

13.27 puts 224

13.27.1 例子 224

13.27.2 有关函数 224

13.28 remove 224

13.28.1 例子 225

13.28.2 有关函数 225

13.29 rename 225

13.29.1 例子 225

13.29.2 有关函数 225

13.30 rewind 225

13.30.1 例子 226

13.30.2 有关函数 226

13.31 scanf 226

13.31.1 C99为scanf()增加的格式修饰符 228

13.31.2 例子 228

13.31.3 有关函数 229

13.32 setbuf 229

13.32.1 例子 229

13.32.2 有关函数 229

13.33 setvbuf 229

13.33.1 例子 230

13.33.2 有关函数 230

13.34 snprintf 230

13.34.1 有关函数 230

13.35 sprintf 230

13.35.1 例子 231

13.35.2 有关函数 231

13.36 sscanf 231

13.36.1 例子 231

13.36.2 有关函数 231

13.37 tmpfile 231

13.37.1 例子 232

13.37.2 有关函数 232

13.38 tmpnam 232

13.38.1 例子 232

13.38.2 有关函数 233

13.39 ungetc 233

13.39.1 例子 233

13.39.2 有关函数 233

13.40 vpirintf、vfprintf、vsprintf及vsnprintf 233

13.40.1 例子 234

13.40.2 有关函数 234

13.41 vscanf、vfscanf及vsscanf 234

13.41.1 有关函数 235

第14章 串和字符函数 236

14.1 isalnum 236

14.1.1 例子 236

14.1.2 有关函数 237

14.2 isalpha 237

14.2.1 例子 237

14.2.2 有关函数 237

14.3 isblank 237

14.3.1 例子 237

14.3.2 有关函数 238

14.4 iscntrl 238

14.4.1 例子 238

14.4.2 有关函数 239

14.5 isdigit 239

14.5.1 例子 239

14.5.2 有关函数 239

14.6 isgraph 239

14.6.1 例子 239

14.6.2 有关函数 240

14.7 islower 240

14.7.1 例子 240

14.7.2 有关函数 240

14.8 isprint 241

14.8.1 例子 241

14.8.2 有关函数 241

14.9 ispunct 241

14.9.1 例子 241

14.9.2 有关函数 242

14.10 isspace 242

14.10.1 例子 242

14.10.2 有关函数 242

14.11 isupper 243

14.11.1 例子 243

14.11.2 有关函数 243

14.12 isxdigit 243

14.12.1 例子 243

14.12.2 有关函数 244

14.13 memchr 244

14.13.1 例子 244

14.13.2 有关函数 244

14.14 memcmp 244

14.14.1 例子 245

14.14.2 有关函数 245

14.15 memcpy 245

14.15.1 例子 246

14.15.2 有关函数 246

14.16 memmove 246

14.16.1 例子 246

14.16.2 有关函数 247

14.17 memset 247

14.17.1 例子 247

14.17.2 有关函数 247

14.18 strcat 247

14.18.1 例子 247

14.18.2 有关函数 248

14.19 strchr 248

14.19.1 例子 248

14.19.2 有关函数 248

14.20 strcmp 249

14.20.1 例子 249

14.20.2 有关函数 249

14.21 strcoll 249

14.21.1 例子 249

14.21.2 有关函数 250

14.22 strcpy 250

14.22.1 例子 250

14.22.2 有关函数 250

14.23 strcspn 250

14.23.1 例子 250

14.23.2 有关函数 251

14.24 strerror 251

14.24.1 例子 251

14.25 strlen 251

14.25.1 例子 251

14.25.2 有关函数 251

14.26 strncat 251

14.26.1 例子 251

14.26.2 有关函数 252

14.27 strncmp 252

14.27.1 例子 252

14.27.2 有关函数 253

14.28 strncpy 253

14.28.1 例子 253

14.28.2 有关函数 253

14.29 strpbrk 253

14.29.1 例子 254

14.29.2 有关函数 254

14.30 strrchr 254

14.30.1 例子 254

14.30.2 有关函数 254

14.31 strspn 255

14.31.1 例子 255

14.31.2 有关函数 255

14.32 strstr 255

14.32.1 例子 255

14.32.2 有关函数 256

14.33 strtok 256

14.33.1 例子 256

14.33.2 有关函数 256

14.34 strxfrm 257

14.34.1 例子 257

14.34.2 有关函数 257

14.35 tolower 257

14.35.1 例子 257

14.35.2 有关函数 257

14.36 toupper 257

14.36.1 例子 257

14.36.2 有关函数 258

第15章 数学函数 259

15.1 acos 260

15.1.1 例子 260

15.1.2 有关函数 260

15.2 acosh 261

15.2.1 有关函数 261

15.3 asin 261

15.3.1 例子 261

15.3.2 有关函数 261

15.4 asinh 261

15.4.1 有关函数 262

15.5 atan 262

15.5.1 例子 262

15.5.2 有关函数 262

15.6 atanh 262

15.6.1 有关函数 263

15.7 atan2 263

15.7.1 例子 263

15.7.2 有关函数 263

15.8 cbrt 263

15.8.1 例子 264

15.8.2 有关函数 264

15.9 ceil 264

15.9.1 例子 264

15.9.2 有关函数 264

15.10 copysign 264

15.10.1 有关函数 264

15.11 cos 265

15.11.1 例子 265

15.11.2 有关函数 265

15.12 cosh 265

15.12.1 例子 265

15.12.2 有关函数 266

15.13 erf 266

15.13.1 有关函数 266

15.14 erfc 266

15.14.1 有关函数 266

15.15 exp 266

15.15.1 例子 267

15.15.2 有关函数 267

15.16 exp2 267

15.16.1 有关函数 267

15.17 expml 267

15.17.1 有关函数 267

15.18 fabs 267

15.18.1 例子 268

15.18.2 有关函数 268

15.19 fdirn 268

15.19.1 有关函数 268

15.20 floor 268

15.20.1 例子 268

15.20.2 有关函数 269

15.21 fma 269

15.21.1 有关函数 269

15.22 fmax 269

15.22.1 有关函数 269

15.23 fmin 269

15.23.1 有关函数 269

15.24 fmod 269

15.24.1 例子 270

15.24.2 有关函数 270

15.25 frexp 270

15.25.1 例子 270

15.25.2 有关函数 270

15.26 hypot 271

15.26.1 有关函数 271

15.27 ilogb 271

15.27.1 有关函数 271

15.28 ldexp 271

15.28.1 例子 271

15.28.2 有关函数 272

15.29 lgamma 272

15.29.1 有关函数 272

15.30 llrint 272

15.30.1 有关函数 272

15.31 llround 272

15.31.1 有关函数 272

15.32 log 273

15.32.1 例子 273

15.32.2 有关函数 273

15.33 loglp 273

15.33.1 有关函数 273

15.34 log10 274

15.34.1 例子 274

15.34.2 有关函数 274

15.35 1og2 274

15.35.1 有关函数 274

15.36 logb 275

15.36.1 有关函数 275

15.37 lrint 275

15.37.1 有关函数 275

15.38 lround 275

15.38.1 有关函数 275

15.39 modef 275

15.39.1 例子 276

15.39.2 有关函数 276

15.40 nan 276

15.40.1 有关函数 276

15.41 nearbyint 276

15.41.1 有关函数 276

15.42 nextafter 276

15.42.1 有关函数 277

15.43 nexttoward 277

15.43.1 有关函数 277

15.44 pow 277

15.44.1 例子 277

15.44.2 有关函数 278

15.45 remainder 278

15.45.1 有关函数 278

15.46 remquo 278

15.46.1 有关函数 278

15.47 rint 278

15.47.1 有关函数 279

15.48 round 279

15.48.1 有关函数 279

15.49 scalbln 279

15.49.1 有关函数 279

15.50 scalbn 279

15.50.1 有关函数 280

15.51 sin 280

15.51.1 例子 280

15.51.2 有关函数 280

15.52 sinh 280

15.52.1 例子 280

15.52.2 有关函数 281

15.53 sqrt 281

15.53.1 例子 281

15.53.2 有关函数 281

15.54 tan 281

15.54.1 例子 282

15.54.2 有关函数 282

15.55 tanh 282

15.55.1 例子 282

15.55.2 有关函数 283

15.56 tgamma 283

15.56.1 有关函数 283

15.57 trunc 283

15.57.1 有关函数 283

第16章 时间、日期和本地化函数 284

16.1 asctime 284

16.1.1 例子 284

16.1.2 有关函数 285

16.2 clock 285

16.2.1 例子 285

16.2.2 有关函数 285

16.3 ctime 285

16.3.1 例子 286

16.3.2 有关函数 286

16.4 difftime 286

16.4.1 例子 286

16.4.2 有关函数 287

16.5 gmtime 287

16.5.1 例子 287

16.5.2 有关函数 287

16.6 localeconv 287

16.6.1 例子 288

16.6.2 有关函数 289

16.7 localtime 289

16.7.1 例子 289

16.7.2 有关函数 290

16.8 mktime 290

16.8.1 例子 290

16.8.2 有关函数 290

16.9 setlocale 290

16.9.1 例子 291

16.9.2 有关函数 291

16.10 strftime 291

16.10.1 例子 292

16.10.2 有关函数 293

16.11 time 293

16.11.1 例子 293

16.11.2 有关函数 294

第17章 动态分配函数 295

17.1 calloc 295

17.1.1 有关函数 295

17.2 free 295

17.2.1 例子 296

17.2.2 有关函数 296

17.3 malloc 296

17.3.1 例子 296

17.3.2 有关函数 297

17.4 realloc 297

17.4.1 例子 297

17.4.2 有关函数 298

第18章 工具函数 299

18.1 abort 299

18.1.1 例子 299

18.1.2 有关函数 299

18.2 abs 299

18.2.1 例子 300

18.2.2 有关函数 300

18.3 assert 300

18.3.1 例子 300

18.3.2 有关函数 300

18.4 atexit 300

18.4.1 例子 301

18.4.2 有关函数 301

18.5 atof 301

18.5.1 例子 301

18.5.2 有关函数 302

18.6 atoi 302

18.6.1 例子 302

18.6.2 有关函数 302

18.7 atol 302

18.7.1 例子 303

18.7.2 有关函数 303

18.8 atoll 303

18.8.1 有关函数 303

18.9 bsearch 303

18.9.1 例子 304

18.9.2 有关函数 304

18.10 div 305

18.10.1 例子 305

18.10.2 有关函数 305

18.11 exit 305

18.11.1 例子 305

18.11.2 有关函数 306

18.12 _Exit 306

18.12.1 有关函数 306

18.13 getenv 306

18.13.1 例子 306

18.13.2 有关函数 307

18.14 labs 307

18.14.1 例子 307

18.14.2 有关函数 307

18.15 llabs 307

18.l5.1 有关函数 307

18.16 ldiv 307

18.16.1 例子 308

18.16.2 有关函数 308

18.17 lldiv 308

18.17.1 有关函数 308

18.18 longjmp 308

18.18.1 例子 309

18.18.2 有关函数 309

18.19 mblen 310

18.19.1 例子 310

18.19.2 有关函数 310

18.20 mbstowcs 310

18.20.1 例子 310

18.20.2 有关函数 310

18.21 mbtowc 310

18.21.1 例子 311

18.21.2 有关函数 311

18.22 qsort 311

18.22.1 例子 311

18.22.2 有关函数 312

18.23 raise 312

18.23.1 有关函数 312

18.24 rand 312

18.24.1 例子 312

18.24.2 有关函数 313

18.25 setjmp 313

18.25.1 有关函数 313

18.26 signal 313

18.26.1 有关函数 313

18.27 srand 314

18.27.1 例子 314

18.27.2 有关函数 314

18.28 strtod 314

18.28.1 例子 315

18.28.2 有关函数 315

18.29 strtof 315

18.29.1 有关函数 316

18.30 strtol 316

18.30.1 例子 316

18.30.2 有关函数 316

18.31 strtold 316

18.31.1 有关函数 317

18.32 strtoll 317

18.32.1 有关函数 317

18.33 strtoul 317

18.33.1 例子 317

18.33.2 有关函数 318

18.34 strtoull 318

18.34.1 有关函数 318

18.35 system 318

18.35.1 例子 318

18.35.2 有关函数 318

18.36 va_arg、va_cpoy、va_start及va_end 318

18.36.1 例子 319

18.36.2 有关函数 320

18.37 wcstombs 320

18.37.1 有关函数 320

18.38 wctomb 320

18.38.1 有关函数 320

第19章 宽字符函数 321

19.1 宽字符分类函数 321

19.2 宽字符I/0函数 322

19.3 宽字符串函数 323

19.4 宽字符串变换函数 324

19.5 宽字符数组函数 325

19.6 多字节/宽字符变换函数 325

第20章 C99增加的库函数特性 327

20.1 复数库 327

20.2 浮点环境库 329

20.3 <stdint.h>头部 329

20.4 整数格式转换函数 330

20.5 一般类型数学宏 330

20.6 <stdbool.h>头部 331

第四部分 算法和应用 333

第21章 排序和查找 333

21.1 排序 333

21.1.1 排序算法的分类 333

21.1.2 排序算法的评价 334

21.1.3 气泡排序 334

21.1.4 选择排序 337

21.1.5 插入排序 338

21.1.6 改进的排序 338

21.1.7 谢尔排序 339

21.1.8 快速排序 340

21.2 选择排序算法 341

21.3 对其他数据结构排序 342

21.3.1 对串排序 342

21.3.2 对结构排序 343

21.4 对随机访间的磁盘文件排序 344

21.5 查找 347

21.5.1 查找方法 348

21.5.2 顺序查找 348

21.5.3 对分查找 348

第22章 队列、堆栈、链表和树 350

22.1 队列 350

22.2 循环队列 354

22.3 堆栈 356

22.4 链表 360

22.5 单向链表 360

22.6 双向链表 364

22.7 通信录实例 367

22.8 二叉树 374

第23章 稀疏数组 381

23.1 理解稀疏数组的作用 381

23.2 链表稀疏数组 382

23.2.1 链表方法的性能分析 384

23.3 二叉树方法 384

23.3.1 二叉树方法的性能分析 386

23.4 指针数组方法 386

23.4.1 指针数组方法的性能分析 389

23.5 散列方法 389

23.5.1 散列方法的性能分析 392

23.6 决策 392

第24章 表达式分析和求值 393

24.1 表达式 393

24.2 表达式分解 394

24.3 表达式分析 396

24.4 简单表达式分析程序 396

24.5 能处理变量的分析程序 402

24.6 递归下降分析程序中的语法检查 410

第25章 人工智能问题求解 411

25.1 表示和术语 411

25.2 组合爆炸 412

25.3 搜索技术 413

25.4 评价搜索技术 413

25.5 用图表示问题 414

25.6 深度优先搜索 415

25.6.1 深度优先算法的性能分析 424

25.7 宽度优先搜索 424

25.7.1 宽度优先搜索的性能分析 425

25.8 探试式搜索 425

25.9 爬山搜索 426

25.9.1 爬山搜索的性能分析 431

25.10 最小代价搜索 431

25.10.1 最小代价搜索的性能分析 432

25.11 选择搜索技术 432

25.12 寻找多重解 433

25.12.1 路径剪除 433

25.12.2 节点摘除 434

25.13 寻找“最优”解 440

25.14 再谈丢钥匙的例子 445

第五部分 C语言软件开发 451

第26章 构造Windows 2000框架 451

26.1 Windows 2000编程前景 451

26.1.1 桌面模式 451

26.1.2 鼠标 452

26.1.3 图标、位图和图形 452

26.1.4 菜单、控件和对话框 452

26.2 Win32应用编程接口 452

26.3 窗口组件 452

26.4 Windows与用户程序进行交互的方法 453

26.5 Windows 2000应用基础 453

26.5.1 WinMain() 453

26.5.2 窗口过程 454

26.5.3 窗口类型 454

26.5.4 消息环 454

26.5.5 Windows数据类型 454

26.6 Windows 2000框架 454

26.6.1 窗口类型的定义 457

26.6.2 创建窗口 459

26.6.3 消息环 460

26.6.4 窗口函数 461

26.7 无需定义文件 461

26.8 命名约定 462

第27章 C语言软件工程 463

27.1 自顶向下设计 463

27.1.1 构造程序草案 463

27.1.2 选择数据结构 464

27.2 防弹函数 464

27.3 使用MAKE 466

27.3.1 使用MAKE中的宏 468

27.4 使用集成的开发环境 468

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

28.1 效率 470

28.1.1 增量和减量操作符 470

28.1.2 使用寄存器变量 470

28.1.3 指针和数组索引 471

28.1.4 函数的用法 471

28.2 移植程序 474

28.2.1 使用#define 474

28.2.2 对操作系统的依赖 475

28.2.3 数据大小的差异 475

28.3 调试 475

28.3.1 处理顺序错 475

28.3.2 指针问题 476

28.3.3 解释语法错 477

28.3.4 出界错 478

28.3.5 越界错 479

28.3.6 函数原型遗漏 480

28.3.7 变元错 481

28.3.8 栈溢出 481

28.3.9 使用调试程序 481

28.3.10 一般调试理论 482

第六部分 C解释程序 483

第29章 C解释程序 483

29.1 解释程序的现实重要性 483

29.2 Little C说明 484

29.2.1 Little C约束条件 484

29.3 解释结构化语言 486

29.4 C的非正式理论 486

29.4.1 C表达式 487

29.4.2 求表达式的值 487

29.5 表达式分析程序 488

29.5.1 将源代码缩减为部件 488

29.5.2 Little C递归下降分析程序 494

29.6 Little C解释程序 506

29.6.1 解释程序预扫 507

29.6.2 main()函数 509

29.6.3 intecp_block()函数 510

29.6.4 处理局部变量 525

29.6.5 调用用户定义的函数 526

29.6.6 为变量赋值 529

29.6.7 执行if语句 530

29.6.8 处理while循环 531

29.6.9 处理do-while循环 531

29.6.10 for循环 532

29.7 Little C库函数 533

29.8 编译和链接Little C解释程序 536

29.9 演示Little C 536

29.10 改进Little C 540

29.11 扩充Little C 541

29.11.1 增加新的C特征 541

29.11.2 增加附加特征 541