首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言参考手册pdf

C语言参考手册pdf

作者头像
用户7886150
修改2021-02-11 18:16:57
修改2021-02-11 18:16:57
3K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ ilogb()

下载地址:网盘下载

 内容简介  · · · · · ·

    《C语言参考手册(原书第5版)》是C语言的详尽参考手册,分为两部分:第一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特征;第二部分讨论了C语言的标准库,针对它们不同的功能分别进行详细介绍。为了帮助读者理解相关概念,《C语言参考手册(原书第5版)》在讨论C语言及其标准库的细节时,提供了许多实例和解释。第一部分的各章还提供了练习题和主要练习的解答,这些练习可帮助读者加深理解C语言的基本功能和特性。

    《C语言参考手册(原书第5版)》可以作为高等院校计算机专业C语言课程的教材和参考书,也可供程序开发人员参考。

 作者简介  · · · · · ·

    作者:(美国)哈比森(Samuel P.Harbison) (美国)Guy L.Steele Jr. 译者:徐波 等

 目录  · · · · · ·

  译者序

  前  言

  第一部分 C语言

  第1章  概述 2

  1.1  C语言的演变 2

  1.1.1  传统C 2

  1.1.2  标准C(1989) 2

  1.1.3  标准C(1995) 3

  1.1.4  标准C(1999) 3

  1.1.5  标准C++ 4

  1.1.6  本书内容 4

  1.2  应该使用哪种C语言 4

  1.3  C编程概述 5

  1.4  一致性 6

  1.5  语法约定 7

  第2章  词法元素 8

  2.1  字符集 8

  2.1.1  执行字符集 9

  2.1.2  空白字符和行终止符 9

  2.1.3  字符编码 10

  2.1.4  三字符组 10

  2.1.5  多字节字符和宽字符 11

  2.2  注释 13

  2.3  标记 14

  2.4  操作符和分隔符 15

  2.5  标识符 15

  2.6  关键字 17

  2.7  常量 18

  2.7.1  整数常量 18

  2.7.2  浮点数常量 22

  2.7.3  字符常量 23

  2.7.4  字符串常量 25

  2.7.5  转义字符 27

  2.7.6  字符转义码 28

  2.7.7  数值转义码 29

  2.8  C++兼容性 29

  2.8.1  字符集 30

  2.8.2  注释 30

  2.8.3  操作符 30

  2.8.4  标识符和关键字 30

  2.8.5  字符常量 30

  2.9  关于字符集、指令集和编码 30

  2.10  练习 32

  第3章  C预处理器 34

  3.1  预处理器命令 34

  3.2  预处理器词法约定 35

  3.3  定义和替换 36

  3.3.1  类似对象的宏定义 36

  3.3.2  定义带参数的宏 37

  3.3.3  宏表达式的重新扫描 39

  3.3.4  预定义的宏 40

  3.3.5  取消宏定义和重新定义宏 42

  3.3.6  宏展开的优先级错误 42

  3.3.7  宏参数的副作用 43

  3.3.8  把标记转换为字符串 43

  3.3.9 宏展开中的标记合并 44

  3.3.10  宏的可变参数列表 45

  3.3.11  其他问题 46

  3.4  文件包含 46

  3.5  条件编译 48

  3.5.1  #if、#else和#endif命令 48

  3.5.2  #elif命令 49

  3.5.3  #ifdef和#ifndef命令 50

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

  3.5.5  defined操作符 52

  3.6  显式的行号 52

  3.7  pragma指令 53

  3.7.1  标准pragma命令 53

  3.7.2  标准pragma指令的位置 54

  3.7.3 _Pragma操作符 54

  3.8  错误指令 54

  3.9  C++兼容性 55

  3.10  练习 55

  第4章  声明 57

  4.1  声明的组织形式 57

  4.2  术语 58

  4.2.1  作用域 58

  4.2.2  可见性 59

  4.2.3  前向引用 59

  4.2.4  名称的重载 60

  4.2.5  重复声明 61

  4.2.6  重复可见性 62

  4.2.7  范围 62

  4.2.8  初始值 63

  4.2.9  外部名称 64

  4.2.10  编译时名称 65

  4.3  存储类别和函数指定符 65

  4.3.1  默认存储类别指定符 66

  4.3.2  存储类别指定符的例子 66

  4.3.3  函数指定符 67

  4.4  类型指定符和限定符 67

  4.4.1  默认类型指定符 68

  4.4.2  缺失的声明器 69

  4.4.3  类型限定符 70

  4.4.4  const 70

  4.4.5  volatile和序列点 72

  4.4.6  restrict 74

  4.5  声明器 75

  4.5.1  简单声明器 75

  4.5.2  指针声明器 76

  4.5.3  数组声明器 77

  4.5.4  函数声明器 78

  4.5.5  声明器的组合 80

  4.6  初始化值 81

  4.6.1  整数 82

  4.6.2  浮点数 83

  4.6.3  指针 83

  4.6.4  数组 84

  4.6.5  枚举 86

  4.6.6  结构 86

  4.6.7  联合 87

  4.6.8  省略花括号 88

  4.6.9  指定成员的初始化值 88

  4.7  隐式声明 89

  4.8  外部名称 90

  4.8.1  初始化值模型 90

  4.8.2  省略的存储类别模型 90

  4.8.3  公共模型 90

  4.8.4  混合公共模型 91

  4.8.5  总结和建议 91

  4.8.6  未引用的外部声明 92

  4.9  C++兼容性 92

  4.9.1  作用域 92

  4.9.2  标签和typedef名称 92

  4.9.3  用于类型的存储类别指定符 93

  4.9.4  const类型限定符 93

  4.9.5  初始化值 93

  4.9.6  隐式声明 93

  4.9.7  定义和引用声明 94

  4.9.8  函数链接 94

  4.9.9  无参函数 94

  4.10  练习 94

  第5章  类型 97

  5.1  整数类型 98

  5.1.1  有符号整数类型 98

  5.1.2  无符号整数类型 101

  5.1.3  字符类型 102

  5.1.4  扩展整数类型 104

  5.1.5  布尔类型 104

  5.2  浮点类型 104

  5.3  指针类型 108

  5.3.1  通用指针 109

  5.3.2  null指针和非法指针 109

  5.3.3  使用指针的一些警告 110

  5.4  数组类型 111

  5.4.1  数组和指针 111

  5.4.2  多维数组 112

  5.4.3  数组边界 112

  5.4.4  操作 113

  5.4.5  可变长度的数组 113

  5.5  枚举类型 115

  5.6  结构类型 117

  5.6.1  结构类型引用 119

  5.6.2  结构上的操作 120

  5.6.3  成员 120

  5.6.4  结构成员的布局 122

  5.6.5  位段 122

  5.6.6  移植性问题 124

  5.6.7  结构的大小 125

  5.6.8  灵活数组成员 126

  5.7  联合类型 127

  5.7.1  联合成员的布局 127

  5.7.2  联合的大小 128

  5.7.3  使用联合类型 129

  5.7.4  (其他)使用联合类型 130

  5.8  函数类型 131

  5.9  void类型 133

  5.10  typedef名称 133

  5.10.1  用于函数类型的typedef名称 135

  5.10.2  重定义typedef名称 135

  5.10.3  编译器的说明 136

  5.11  类型兼容性 136

  5.11.1  等价的类型 136

  5.11.2  枚举兼容性 137

  5.11.3  数组兼容性 138

  5.11.4  函数兼容性 138

  5.11.5  结构和联合兼容性 139

  5.11.6  指针兼容性 139

  5.11.7  源文件之间的兼容性 139

  5.12  类型名称和抽象声明器 139

  5.13  C++兼容性 141

  5.13.1  枚举类型 141

  5.13.2  typedef名称 141

  5.13.3  类型兼容性 141

  5.14  练习 141

  第6章  转换和表示形式 144

  6.1  表示形式 144

  6.1.1  存储单位和数据长度 144

  6.1.2  字节顺序 145

  6.1.3  对齐限制 146

  6.1.4  指针的长度 147

  6.1.5  地址模型的效果 147

  6.1.6  类型表示形式 149

  6.2  转换 150

  6.2.1  表示形式的变化 150

  6.2.2  细微的转换 150

  6.2.3  转换为整数类型 150

  6.2.4  转换为浮点类型 152

  6.2.5  转换为结构和联合类型 152

  6.2.6  转换为枚举类型 152

  6.2.7  转换为指针类型 152

  6.2.8  转换为数组和函数类型 153

  6.2.9  转换为void类型 153

  6.3  寻常转换 154

  6.3.1  类型转换 154

  6.3.2  赋值转换 154

  6.3.3  寻常单目转换 155

  6.3.4  寻常双目转换 157

  6.3.5  默认的函数实参转换 158

  6.3.6  其他函数转换 159

  6.4  C++兼容性 159

  6.5  练习 159

  第7章  表达式 161

  7.1  对象、左值和指示符 161

  7.2  表达式和优先级 162

  7.2.1  操作符的优先级和结合性 162

  7.2.2  溢出和其他算术异常 163

  7.3  基本表达式 164

  7.3.1  名称 164

  7.3.2  字面值 165

  7.3.3  带括号的表达式 165

  7.4  后缀表达式 166

  7.4.1  下标表达式 166

  7.4.2  成员选择 168

  7.4.3  函数调用 169

  7.4.4  后缀增值和减值操作符 171

  7.4.5  复合字面值 172

  7.5  单目表达式 173

  7.5.1  类型转换 174

  7.5.2  sizeof操作符 174

  7.5.3  单目负号和正号 176

  7.5.4  逻辑反 176

  7.5.5  位反 177

  7.5.6  取地址操作符 177

  7.5.7  间接访问 178

  7.5.8  前缀增值和减值操作符 179

  7.6  双目操作符表达式 180

  7.6.1  乘除操作符 180

  7.6.2  加减操作符 182

  7.6.3  移位操作符 183

  7.6.4  关系操作符 185

  7.6.5  相等操作符 186

  7.6.6  位操作符 188

  7.6.7  整数集合的例子 189

  7.7  逻辑操作符表达式 192

  7.8  条件表达式 194

  7.9  赋值表达式 195

  7.9.1  简单赋值 196

  7.9.2  复合赋值 197

  7.10  线性表达式 197

  7.11  常量表达式 198

  7.11.1  预处理器常量表达式 199

  7.11.2  整型常量表达式 200

  7.11.3  初始化值常量表达式 200

  7.12  求值的顺序 201

  7.13  被丢弃的值 202

  7.14  内存访问的优化 203

  7.15  C++兼容性 204

  7.16  练习 204

  第8章  语句 206

  8.1  语句的基本语法规则 206

  8.2  表达式语句 207

  8.3  标签语句 207

  8.4  复合语句 208

  8.5  条件语句 210

  8.5.1  多路条件语句 210

  8.5.2  悬疑的else问题 211

  8.6  迭代式语句 212

  8.6.1  while语句 212

  8.6.2  do语句 213

  8.6.3  for语句 214

  8.6.4  使用for语句 215

  8.6.5  多个控制变量 217

  8.7  switch语句 218

  8.8  break和continue语句 220

  8.9  return语句 222

  8.10  goto语句 223

  8.11  空语句 224

  8.12  C++兼容性 224

  8.12.1  复合语句 224

  8.12.2  循环中的声明 224

  8.13  练习 225

  第9章  函数 226

  9.1  函数定义 226

  9.2  函数原型 228

  9.2.1  原型出现在什么时候 230

  9.2.2  混合使用原型和非原型声明 230

  9.2.3  合理地使用原型 231

  9.2.4  原型和调用约定 231

  9.2.5  标准C和传统C的兼容性 233

  9.3  形式参数声明 233

  9.4  形参类型的调整 235

  9.5  参数传递约定 236

  9.6  形参的一致 237

  9.7  函数的返回类型 238

  9.8  返回类型的一致 239

  9.9  main函数 239

  9.10  内联函数 240

  9.11  C++兼容性 242

  9.11.1  原型 242

  9.11.2  形参和返回类型中的类型声明 242

  9.11.3  返回类型的一致 242

  9.11.4  main 242

  9.11.5  内联 243

  9.12  练习 243

  第二部分  C函数库

  第10章  函数库简介 246

  10.1  标准C工具 246

  10.2  C++兼容性 247

  10.3  库头文件和名称 249

  10.3.1  assert.h 249

  10.3.2  complex.h 249

  10.3.3  ctype.h 249

  10.3.4  errno.h 249

  10.3.5  fenv.h 249

  10.3.6  float.h 250

  10.3.7  inttypes.h 250

  10.3.8  iso64.h 250

  10.3.9  limits.h 250

  10.3.10  locale.h 250

  10.3.11  math.h 251

  10.3.12  setjmp.h 252

  10.3.13  signal.h 252

  10.3.14  stdarg.h 252

  10.3.15  stdbool.h 252

  10.3.16  stddef.h 252

  10.3.17  stdint.h 252

  10.3.18  stdio.h 252

  10.3.19  stdlib.h 253

  10.3.20  string.h 253

  10.3.21  tgmath.h 253

  10.3.22  time.h 254

  10.3.23  wchar.h 254

  10.3.24  wctype.h 254

  第11章  标准语言附加 255

  11.1  NULL、ptrdiff_t、size_t、offsetof 255

  11.2  EDOM、ERANGE、EILSEQ、errno、

  strerror、perror 256

  11.3  bool、false、true 257

  11.4  va_list、va_start、va_arg、va_end 258

  11.5  标准C的操作符宏 261

  第12章  字符处理 262

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

  12.2  iscsym、iscsymf 264

  12.3  isdigit、isodigit、isxdigit、iswdigit、iswxdigit 264

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

  12.5  islower、isupper、iswlower、iswupper 266

  12.6  isblank、isspace、iswhite、iswspace 266

  12.7  toascii 267

  12.8  toint 267

  12.9  tolower、toupper、towlower、

  towupper 267

  12.10  wctype_t、wctype、iswctype 268

  12.11  wctrans_t、wctrans 269

  第13章  字符串处理 270

  13.1  strcat、strncat、wcscat、wcsncat 270

  13.2  strcmp、strncmp、wcscmp、wcsncmp 271

  13.3  strcpy、strncpy、wcscpy、cscncpy 272

  13.4  strlen、wcslen 273

  13.5  strchr、strrchr、wcschr、wcsrchr 273

  13.6  strspn、strcspn、strpbrk、strrpbrk、

  wcsspn、wcscspn、wcspbrk 274

  13.7  strstr、strtok、wcsstr、wcstok 275

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

  13.9  atof、atoi、atol、atoll 277

  13.10  strcoll、strxfrm、wcscoll、wcsxfrm 277

  第14章  内存函数 279

  14.1  memchr、wmemchr 279

  14.2  memcmp、wmemcmp 279

  14.3  memcpy、memccpy、memmove、wmemcpy、wmemmove 280

  14.4  memset、wmemset 281

  第15章  输入/输出工具 282

  15.1  FILE、EOF、wchar_t、WEOF 283

  15.2  fopen、fclose、fflush、freopen、

  fwide 284

  15.2.1  文件模式 285

  15.2.2  文件的定向 286

  15.3  setbuf、setvbuf 287

  15.4  stdin、stdout、stderr 287

  15.5  fseek、ftell、rewind、fgetpos、

  fsetpos 288

  15.5.1  fseek和ftell 287

  15.5.2  fgetpos和fsetpos 290

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

  15.7  fgets、fgetws、gets 291

  15.8  fscanf、fwscanf、scanf、wscanf、

  sscanf、swscanf 292

  15.8.1  控制字符串 293

  15.8.2  转换规范 293

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

  15.10  fputs、fputws、puts 299

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

  15.11.1  输出格式 300

  15.11.2  转换规范 301

  15.11.3  转换标志 301

  15.11.4  最小字段宽度 302

  15.11.5  精度 303

  15.11.6  长度规范 303

  15.11.7  转换操作 304

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

  15.13  fread、fwrite 312

  15.14  feof、ferror、clearerr 313

  15.15  remove、rename 314

  15.16  tmpfile、tmpnam、mktemp 314

  第16章  基本工具 316

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

  16.2  rand、srand、RAND_MAX 318

  16.3  atof、atoi、atol、atoll 319

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

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

  16.6  getenv 322

  16.7  system 323

  16.8  bsearch、qsort 323

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

  16.10  mblen、mbtowc、wctomb 326

  16.10.1  编码和转换状态 327

  16.10.2  长度函数 327

  16.10.3  转换为宽字符 327

  16.10.4  宽字符转换为多字节字符 328

  16.11  mbstowcs、wcstombs 328

  16.11.1  转换为宽字符串 328

  16.11.2  从宽字符串转换为多字节字符 329

  第17章  数学函数 331

  17.1  abs、lbas、llabs、div、ldiv、lldiv 331

  17.2  fabs 332

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

  17.4  fmod、remainder、remquo 333

  17.5  frexp、ldexp、modf、scalbn 334

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

  17.7  cbrt、fma、hypot、pow、sqrt 335

  17.8  rand、srand、RAND_MAX 336

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

  17.10  acos、asin、atan、atan2、acosh、

  asinh、atanh 337

  17.11  fdim、fmax、fmin 338

  17.12  类型通用的宏 338

  17.13  erf、erfc、lgamma、tgamma 341

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

  17.15  copysign、nan、nextafter、

  nexttoward 343

  17.16  isgreater、isgreaterequal、isless、

  islessequal、islessgreater、isunordered 343

  第18章  时间和日期函数 345

  18.1  clock、clock_t、CLOCKS_PER_SEC、times 345

  18.2  time、time_t 346

  18.3  asctime、ctime 346

  18.4  gmtime、localtime、mktime 347

  18.5  difftime 348

  18.6  strtime、wcsftime 349

  第19章  控制函数 352

  19.1  assert、NDEBUG 352

  19.2  system、exec 352

  19.3  exit、abort 353

  19.4  setjmp、longjmp、jmp_buf 353

  19.5  atexit 354

  19.6  signal、raise、gsignal、ssignal、

  psignal 354

  19.7  sleep、alarm 356

  第20章  区域 357

  20.1  setlocale 357

  20.2  localeconv 358

  第21章  扩展整数类型 361

  21.1  基本规则 361

  21.1.1  类型的种类 361

  21.1.2  要么都定义,要么都不定义 361

  21.1.3  MIN和MAX限制 361

  21.1.4  PRI...和SCN...格式字符串宏 362

  21.2  固定长度的整数类型 363

  21.3  具有最小宽度的最小长度类型 364

  21.4  具有最小宽度的快速类型 364

  21.5  指针长度和最大长度整数类型 365

  21.6  ptrdiff_t、size_t、wchar_t、wint_t和sig_atomic_t的范围 366

  21.7  imaxabs、imaxdiv、imaxdiv_t 366

  21.8  strtoimax、strtouimax 367

  21.9  wcstoimax、wcstoumax 367

  第22章  浮点环境 368

  22.1  介绍 368

  22.2  浮点环境 369

  22.3  浮点异常 369

  22.4  浮点四舍五入模式 370

  22.5  浮点表达式收缩 371

  第23章  复数运算 372

  23.1  复数函数库约定 372

  23.2  complex、_Complex_I、imaginary、_Imaginary_I、I 372

  23.3  CX_LIMITED_RANGE 372

  23.4  cacos、casin、catan、ccos、csin、

  ctan 373

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

  23.6  cexp、clog、cabs、cpow、csqrt 374

  23.7  carg、cimag、creal、conj、cproj 375

  第24章  宽字符和多字节字符工具 377

  24.1  基本类型和宏 377

  24.2  宽字符和多字节字符之间的转换 377

  24.3  宽字符串和多字节字符串之间的转换 379

  24.4  转换为算术类型 380

  24.5  输入和输出函数 380

  24.6  字符串函数 381

  24.7  日期和时间转换 382

  24.8  宽字符分类和映射函数 382

  附录A  ASCII字符集 383

  附录B  语法 384

  附录C  练习答案 396

  下载地址:

 网盘下载

转载于:https://www.cnblogs.com/long12365/p/9730494.html

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档