《C语言参考手册 原书第5版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Samuel P. Harbison III,(美)Guy L. Steele Jr.著;邱仲潘等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111122194
  • 页数:391 页
图书介绍:本书作为C语言参考手册,对C语言的具体细节、运行库以及C语言编程风格作了完整、准确的描述。

第一部分 C语言 1

第1章 简介 1

1.1 C语言的演变 1

1.1.1 传统C语言 1

1.1.2 标准C语言(1989) 1

1.1.3 标准C语言(1995) 2

1.1.4 标准C语言(1999) 2

1.1.5 标准C++语言 2

1.1.6 本书内容 3

1.2 使用C语言的何种方言 3

1.3 C语言编程概述 3

1.4 符合性 4

1.5 语法符号 5

2.1 字符集 6

第2章 词法元素 6

2.1.1 执行字符集 7

2.1.2 空白符与行终结符 7

2.1.3 字符编码方式 8

2.1.4 三字符组 8

2.1.5 多字节字符与宽字符 9

2.2 注释 10

2.3 记号 11

2.4 运算符与分隔符 12

2.5 标识符 12

2.6 关键字 14

2.7 常量 15

2.7.1 整型常量 15

2.7.2 浮点型常量 18

2.7.3 字符型常量 20

2.7.4 字符串型常量 21

2.7.5 转义符 23

2.7.6 字符转义符 24

2.7.7 数字转义符 25

2.8 C++兼容性 25

2.8.1 字符集 25

2.8.2 注释语句 26

2.8.3 运算符 26

2.8.4 标识符与关键字 26

2.8.5 字符型常量 26

2.9 字符集、指令集和编码方式 26

2.10 练习 27

第3章 C语言预处理器 29

3.1 预处理器命令 29

3.2 预处理器词法规则 29

3.3 定义和替换 30

3.3.1 对象式宏定义 31

3.3.2 函数式宏定义 31

3.3.3 重新扫描宏表达式 33

3.3.4 预定义宏 34

3.3.5 取消宏定义与重新定义宏 36

3.3.6 宏扩展中的优先级错误 36

3.3.7 宏参数的副作用 37

3.3.8 将记号转换为字符串 37

3.3.9 宏扩展中的记号合并 38

3.3.10 宏中的可变参数表 39

3.3.11 其他问题 39

3.4 文件包含 40

3.5 条件编译 41

3.5.1 #if、#else与#endif命令 41

3.5.2 #elif命令 42

3.5.3 #ifdef与#ifndef命令 43

3.5.4 条件命令中的常量表达式 44

3.5.5 defined运算符 45

3.6 显式的行编号 45

3.7 杂注指令 46

3.7.1 标准杂注 46

3.7.2 标准杂注的位置 46

3.7.3 _Pragma运算符 47

3.8 错误指令 47

3.9 C++兼容性 47

3.10 练习 48

第4章 声明 50

4.1 声明组织 50

4.2.1 作用域 51

4.2 术语 51

4.2.2 有效性 52

4.2.3 向前引用 52

4.2.4 名称重载 53

4.2.5 重复声明 54

4.2.6 重复有效性 54

4.2.7 生存期 55

4.2.8 初值 55

4.2.9 外部名称 56

4.2.10 编译名称 57

4.3 存储类说明符与函数说明符 57

4.3.1 默认存储类说明符 58

4.3.2 存储类说明符举例 58

4.3.3 函数说明符 59

4.4 类型说明符与限定符 59

4.4.1 默认类型说明符 60

4.4.2 忽略声明符 61

4.4.3 类型限定符 61

4.4.4 const类型限定符 62

4.4.5 volatile类型限定符与序列点 63

4.4.6 restrict类型限定符 65

4.5 声明符 66

4.5.1 简单声明符 66

4.5.2 指针声明符 67

4.5.3 数组声明符 67

4.5.4 函数声明符 69

4.5.5 复合声明符 70

4.6 初始化语句 71

4.6.1 整数变量初始化语句 72

4.6.3 指针变量初始化语句 73

4.6.2 浮点数变量初始化语句 73

4.6.4 数组类型变量初始化语句 74

4.6.5 枚举类型变量初始化语句 76

4.6.6 结构类型变量初始化语句 76

4.6.7 联合变量初始化语句 77

4.6.8 省略花括号 77

4.6.9 指定初值 77

4.7 隐式声明 79

4.8 外部名称 79

4.8.1 初始化语句模型 79

4.8.2 省略存储类模型 79

4.8.3 公用模型 80

4.8.4 混合公用模型 80

4.8.5 总结与建议 80

4.9.1 作用域 81

4.9.2 标志名称与typedef名称 81

4.9 C++兼容性 81

4.8.6 未引用的外部声明 81

4.9.3 类型的存储类说明符 82

4.9.4 const类型限定符 82

4.9.5 初始化语句 82

4.9.6 隐式声明 82

4.9.7 定义声明与引用声明 82

4.9.8 函数连接 83

4.9.9 无参函数 83

4.10 练习 83

第5章 类型 85

5.1 整数类型 86

5.1.1 带符号整数类型 86

5.1.2 无符号整数类型 89

5.1.3 字符类型 90

5.1.4 扩展整数类型 91

5.1.5 布尔类型 91

5.2 浮点数类型 92

5.3 指针类型 95

5.3.1 通用指针 96

5.3.2 null指针与无效指针 97

5.3.3 指针注意事项 98

5.4 数组类型 98

5.4.1 数组与指针 98

5.4.2 多维数组 99

5.4.3 数组边界 100

5.4.4 运算 100

5.4.5 变长数组 101

5.5 枚举类型 102

5.6 结构类型 104

5.6.1 结构类型引用 106

5.6.3 成员 107

5.6.2 结构运算 107

5.6.4 结构成员存储布局 108

5.6.5 位字段 109

5.6.6 移植性问题 111

5.6.7 结构长度 112

5.6.8 灵活数组成员 112

5.7 联合类型 113

5.7.1 联合成员存储布局 114

5.7.2 联合类型长度 114

5.7.3 使用联合类型 115

5.7.4 误用联合类型 116

5.8 函数类型 117

5.9 void类型 119

5.10 typedef名称 119

5.10.2 重定义typedef名称 121

5.10.1 函数类型的typedef名称 121

5.10.3 实现注意事项 122

5.11 类型兼容性 122

5.11.1 一致类型 122

5.11.2 枚举兼容性 123

5.11.3 数组兼容性 123

5.11.4 函数兼容性 124

5.11.5 结构和联合兼容性 124

5.11.6 指针兼容性 124

5.11.7 源文件之间的兼容性 124

5.12 类型名与抽象声明符 125

5.13 C++兼容性 126

5.13.1 枚举类型 126

5.13.2 typedef名称 126

5.14 练习 127

5.13.3 类型兼容性 127

6.1 表示 129

6.1.1 存储单元与数据长度 129

第6章 转换与表示 129

6.1.2 字节顺序 130

6.1.3 对齐限制 131

6.1.4 指针长度 132

6.1.5 寻址模型 132

6.1.6 类型表示 134

6.2 转换 134

6.2.1 表示方法改变 134

6.2.2 普通转换 134

6.2.3 转换成整数类型 135

6.2.5 转换成结构类型或联合类型 136

6.2.6 转换成枚举类型 136

6.2.4 转换成浮点数类型 136

6.2.7 转换成指针类型 137

6.2.8 转换成数组类型或函数类型 137

6.2.9 转换成void类型 137

6.3 普通转换 138

6.3.1 类型转换 138

6.3.2 赋值转换 138

6.3.3 普通一元转换 139

6.3.4 普通二元转换 141

6.3.5 默认函数参数转换 142

6.3.6 其他函数转换 143

6.4 C++兼容性 143

6.5 练习 143

第7章 表达式 145

7.1 对象、左值与指定符 145

7.2.1 运算符优先级与结合律 146

7.2 表达式与优先级 146

7.2.2 溢出和其他算术异常 147

7.3 主表达式 148

7.3.1 名称 148

7.3.2 字面值 149

7.3.3 括号表达式 149

7.4 后缀表达式 149

7.4.1 下标表达式 150

7.4.2 成员选择 151

7.4.3 函数调用 153

7.4.4 后缀自增运算符与后缀自减运算符 154

7.4.5 复合字面值 155

7.5 一元表达式 156

7.5.1 类型转换 157

7.5.2 sizeof运算符 157

7.5.3 一元负号运算符与一元正号运算符 158

7.5.4 逻辑非运算符 159

7.5.5 按位反运算符 159

7.5.6 地址运算符 160

7.5.7 间接访问运算符 160

7.5.8 前缀自增运算符与前缀自减运算符 161

7.6 二元运算符表达式 162

7.6.1 乘法运算符 162

7.6.2 加法运算符 164

7.6.3 移位运算符 165

7.6.4 关系运算符 167

7.6.5 判等运算符 168

7.6.6 按位运算符 169

7.6.7 整数集合示例 170

7.7 逻辑运算符表达式 174

7.8 条件表达式 175

7.9 赋值表达式 176

7.9.1 简单赋值 177

7.9.2 复合赋值 178

7.10 顺序表达式 179

7.11 常量表达式 180

7.11.1 预处理器常量表达式 180

7.11.2 整型常量表达式 181

7.11.3 初始化程序常量表达式 181

7.12 求值顺序 182

7.13 放弃值 183

7.14 优化内存访问 184

7.15 C++兼容性 185

7.16 练习 185

第8章 语句 187

8.1 语句的一般语法规则 187

8.3 标号语句 188

8.2 表达式语句 188

8.4 复合语句 189

8.5 条件语句 190

8.5.1 多路条件语句 191

8.5.2 悬而未决的else问题 191

8.6 迭代语句 192

8.6.1 while语句 192

8.6.2 do语句 193

8.6.3 fo语句 194

8.6.4 for语句应用 195

8.6.5 多个控制变量 197

8.7 switch语句 198

8.8 break语句与continue语句 200

8.9 return语句 202

8.11 null语句 203

8.10 goto语句 203

8.12 C++兼容性 204

8.12.1 复合语句 204

8.12.2 循环中的声明 204

8.13 练习 204

第9章 函数 206

9.1 函数定义 206

9.2 函数原型 208

9.2.1 何时存在原型 209

9.2.2 混合原型声明与非原型声明 210

9.2.3 正确使用原型 211

9.2.4 原型与调用规则 211

9.2.5 与标准C语言和传统C语言的兼容性 212

9.3 正式参数声明 213

9.4 调整参数类型 215

9.6 参数一致性 216

9.5 参数传递规则 216

9.7 函数返回类型 217

9.8 返回类型一致性 218

9.9 主程序 218

9.10 内联函数 219

9.11 C++兼容性 221

9.11.1 原型 221

9.11.2 参数类型声明与返回类型声明 221

9.11.3 返回类型一致性 221

9.11.4 main函数 221

9.11.5 内联 221

9.12 练习 221

第二部分 C语言库 223

第10章 库简介 223

10.1 标准C语言函数 223

10.2 C++兼容性 224

10.3.1 assert.h 225

10.3 库头文件与名称 225

10.3.2 complex.h 226

10.3.3 ctype.h 226

10.3.4 errno.h 226

10.3.5 fenv.h 226

10.3.6 float.h 226

10.3.7 inttypes.h 227

10.3.8 iso646.h 227

10.3.9 limits.h 227

10.3.10 locale.h 227

10.3.11 math.h 227

10.3.16 stddef.h 229

10.3.18 stdio.h 229

10.3.17 stdint.h 229

10.3.14 stdarg.h 229

10.3.15 stdbool.h 229

10.3.13 signal.h 229

10.3.12 setjmp.h 229

10.3.19 stdlib.h 230

10.3.20 string.h 230

10.3.21 tgmath.h 230

10.3.22 time.h 231

10.2.23 wchar.h 231

10.3.24 wctype.h 231

第11章 标准语言补充 232

11.1 NULL、ptrdiff_t、size_t、offsetof 232

11.2 EDOM、ERANGE、EILSEQ、errno、strerror、perror 233

11.3 bool、false、true 234

11.4 va_list、va_start、va_arg、va_end 235

11.5 标准C语言运算符宏 238

第12章 字符处理函数 239

12.1 isalnum、isalpha、iscntrl、iswalnum、iswalpha、iswcntrl 239

12.2 iscsym、iscsymf 241

12.3 isdigit、isodigit、isxdigit、iswdigit、iswxdigit 241

12.4 isgraph、isprint、ispunct、iswgraph、iswprint、iswpunct 241

12.5 islower、isupper、iswlower、iswupper 242

12.6 isblank、isspace、iswhite、iswspace 243

12.7 toascii 243

12.8 toint 244

12.9 tolower、toupper、towlower、towupper 244

12.10 wctype_t、wctype、iswctype 245

12.11 wctrans_t、wctrans 246

第13章 字符串处理函数 247

13.1 strcat、strncat、wcscat、wcsncat 247

13.2 strcmp、strncmp、wcscmp、wcsncmp 248

13.3 strcpy、strncpy、wcscpy、wcsncpy 249

13.4 strlen、wcslen 249

13.5 strchr、strrchr、wcschr、wcsrchr 250

13.6 strspn、strcspn、strpbrk、strrpbrk、wcsspn、wcscspn、wcspbrk 251

13.7 strstr、strtok、wcsstr、wcstok 252

13.8 strtod、strtof、strtold、strtol、strtoll、strtoul、strtoull 253

13.9 atof、atoi、atol、atoll 253

13.10 strcoll、strxfrm、wcscoll、wcsxfrm 253

第14章 内存函数 255

14.1 memchr、wmemchr 255

14.2 memcmp、wmemcmp 255

14.3 memcpy、memccpy、memmove、wmemcpy、wmemmove 256

14.4 memset、wmemset 257

第15章 输入/输出函数 258

15.2 fopen、fclose、fflush、freopen、fwide 259

15.1 FILE、EOF、wchar_t、wint_t、WEOF 259

15.2.1 文件访问方式 261

15.2.2 文件定向 262

15.3 setbuf、setvbuf 262

15.4 stdin、stdout、stderr 263

15.5 fseek、ftell、rewind、fgetpos、fsetpos 264

15.5.1 fseek与ftell 264

15.5.2 fgetpos与fsetpos 265

15.6 fgetc、fgetwc、getc、getwc、getchar、getwchar、ungetc、ungetwc 266

15.7 fgets、fgetws、gets 267

15.8 fscanf、fwscanf、scanf、wscanf、sscanf、swscanf 267

15.8.1 控制字符串 268

15.8.2 转换说明 269

15.9 fputc、fputwc、putc、putwc、putchar、putwchar 273

15.11 fprintf、printf、sprintf、snprintf、fwprintf、wprintf、swprintf 274

15.10 fputs、fputws、puts 274

15.11.1 输出格式 275

15.11.2 转换说明 276

15.11.3 转换标志 276

15.11.4 最小字段宽度 277

15.11.5 精度说明 277

15.11.6 长度说明 277

15.11.7 转换操作 278

15.12 v[x]printf、v[x]scanf 285

15.13 fread、fwrite 286

15.14 feof、ferror、clearerr 287

15.15 remove、rename 287

15.16 tmpfile、tmpnam、mktemp 288

第16章 通用函数 289

16.1 malloc、calloc、mlalloc、clalloc、free、cfree 289

16.3 atof、atoi、atol、atoll 291

16.2 rand、srand、RAND_MAX 291

16.4 strtod、strtof、strtold、strtol、strtoll、strtoul、strtoull 292

16.5 abort、atexit、exit、_Exit、EXIT_FAILURE、EXIT_SUCCESS 294

16.6 getenv 295

16.7 system 295

16.8 bsearch、qsort 296

16.9 abs、labs、llabs、div、ldiv、lldiv 298

16.10 mblen、mbtowc、wctomb 299

16.10.1 编码方式与转换状态 299

16.10.2 长度函数 300

16.10.3 转换成宽字符 300

16.10.4 转换宽字符 300

16.11 mbstowcs、wcstombs 300

16.11.1 转换成宽字符串 301

17.1 abs、labs、llabs、div、ldiv、lldiv 302

17.2 fabs 302

第17章 数学函数 302

16.11.2 转换宽字符串 302

17.3 ceil、floor、lrint、llrint、lround、llround、nearbyint、round、rint、trunc 303

17.4 fmod、remainder、remquo 304

17.5 frexp、ldexp、modf、scalbn 304

17.6 exp、exp2、expm1、ilogb、log、log10、log1p、log2、logb 305

17.7 cbrt、fma、hypot、pow、sqrt 306

17.8 rand、srand、RAND_MAX 307

17.9 cos、sin、tan、cosh、sinh、tanh 307

17.10 acos、asin、atan、atan2、acosh、asinh、atanh 307

17.11 fdim、fmax、fmin 308

17.12 通用类型宏 309

17.13 erf、erfc、lgamma、tgamma 312

17.14 fpclassify、isfinite、isinf、isnan、isnormal、signbit 312

17.15 copysign、nan、nextafter、nexttowatd 313

17.16 isgreater、isgreaterequal、isless、islessequal、islessgreater、isunordered 314

第18章 时间和日期函数 315

18.1 clock、clock_t、CLOCKS_PER_SEC、times 315

18.2 time、time_t 316

18.3 asctime、ctime 316

18.4 gmtime、localtime、mktime 317

18.5 difftime 318

18.6 strftime、wcsftime 319

第19章 控制函数 322

19.1 assert、NDEBUG 322

19.2 system、exec 322

19.3 exit、abort 322

19.4 setjmp、longjmp、jmp_buf 323

19.6 signal、raise、gsignal、ssingnal、psignal 324

19.5 atexit 324

19.7 sleep、alarm 326

第20章 区域设置函数 327

20.1 setlocale 327

20.2 localeconv 328

第21章 扩展整数类型 331

21.1 一般规则 331

21.1.1 类型种类 331

21.1.2 全部定义或全部不定义 331

21.1.3 最小限制与最大限制 331

21.1.4 PRI...与SCN...格式字符串宏 332

21.2 准确长度类型 333

21.3 最小长度类型 333

21.4 快速长度类型 334

21.5 指针长度类型与最大长度类型 335

21.7 imaxabs、imaxdiv、imaxdiv_t 336

21.6 ptrdiff_t、size_t、wchar_t、wint_t与sig_atomic_t的范围 336

21.8 strtoimax、strtouimax 337

21.9 wcstoimax、wcstoumax 337

第22章 浮点数环境 338

22.1 概述 338

22.2 浮点数环境 338

22.3 浮点数异常 339

22.4 浮点数舍入方式 340

第23章 复数算术 341

23.1 复数库规则 341

23.3 CX_LIMITED_RANGE 341

23.4 cacos、casin、catan、ccos、csin、ctan 341

23.2 complex、_Complex_Ⅰ、imaginary、_Imaginary_Ⅰ、Ⅰ 342

23.5 cacosh、casinh、catanh、ccosh、csinh、ctanh 342

23.6 cexp、clog、cabs、cpow、csqrt 343

23.7 carg、cimag、creal、conj、cproj 344

第24章 宽字符与多字节函数 346

24.1 基本类型和宏 346

24.2 多字节字符与宽字符的转换 346

24.3 宽字符串与多字节字符串的转换 347

24.4 转换成算术类型 348

24.5 输入与输出函数 349

24.6 字符串函数 349

24.7 日期与时间转换 350

24.8 宽字符分类函数与映射函数 350

第三部分 附录 353

附录A ASCⅡ字符集 353

附录B C语言语法 354

附录C 练习答案 367

索引 374