• 正版二手右上角一点泛黄,内页不影响看。C语言程序设计现代方法第2版·修订版
  • 正版二手右上角一点泛黄,内页不影响看。C语言程序设计现代方法第2版·修订版
  • 正版二手右上角一点泛黄,内页不影响看。C语言程序设计现代方法第2版·修订版
  • 正版二手右上角一点泛黄,内页不影响看。C语言程序设计现代方法第2版·修订版
21年品牌 40万+商家 超1.5亿件商品

正版二手右上角一点泛黄,内页不影响看。C语言程序设计现代方法第2版·修订版

22.8 1.8折 129.8 八品

仅1件

山东滨州
认证卖家担保交易快速发货售后保障

作者[美]K.N.金(K.N.King) 著;吕秀锋、黄倩 译

出版社人民邮电出版社

出版时间2021-07

版次1

装帧平装

上书时间2024-09-22

书友kw6373198的书摊

已实名 进店 收藏店铺

   商品详情   

品相描述:八品
图书标准信息
  • 作者 [美]K.N.金(K.N.King) 著;吕秀锋、黄倩 译
  • 出版社 人民邮电出版社
  • 出版时间 2021-07
  • 版次 1
  • ISBN 9787115565198
  • 定价 129.80元
  • 装帧 平装
  • 开本 16开
  • 纸张 胶版纸
  • 页数 672页
  • 字数 1.27千字
【内容简介】
时至今日,C语言仍然是计算机领域的通用语言之一,但今天的C语言已经和最初的时候大不相同了。本书主要目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化”。第2版修订版中不仅有C99中的新特性,还与时俱进地增加了C11和C18中的内容。本书分为C语言的基础特性、C语言的高级特性、C语言标准库和参考资料4个部分。每章末尾的“问与答”部分给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。 

本书是C开发人员的理想参考书,在国外也被众多大学作为C语言课程的教材。
【作者简介】

【作者简介】
K. N. 金(K. N. King)
世界知名的计算机程序设计教育家。他拥有耶鲁大学计算机科学硕士学位,加州大学伯克利分校计算机科学博士学位,曾任教于佐治亚理工学院和佐治亚州立大学。除本书外,他还撰写了广受欢迎的著作Modula-2: A Complete Guide和Java Programming: From the Beginning。
【译者简介】
吕秀锋
曾任教于北京理工大学软件学院,讲授过多门计算机课程,包括“计算机基础(双语)”“C语言程序设计(双语)”“数据结构”“程序设计开发与实践”。

黄倩
河海大学计算机科学与技术系主任,兼任中国人工智能学会深度学习专委会委员、中国计算机学会多媒体技术专委会委员。博士毕业于中国科学院计算技术研究所,译有《编程珠玑(第2版)》等。
【审校简介】
李忠
资深C语言专家。著有《穿越计算机的迷雾》《X86汇编语言:从实模式到保护模式》《C语言非常道》和《标准C语言指南》等。

【目录】
第 1章 C语言概述 1 

1.1 C语言的历史 1 

1.1.1 起源 1 

1.1.2 标准化 1 

1.1.3 基于C的语言 2 

1.2 C语言的优缺点 3 

1.2.1 C语言的优点 3 

1.2.2 C语言的缺点 4 

1.2.3 高效地使用C语言 5 

问与答 5 

第 2章 C语言基本概念 7 

2.1 编写一个简单的C程序 7 

2.1.1 编译和链接 8 

2.1.2 集成开发环境 9 

2.2 简单程序的一般形式 9 

2.2.1 指令 9 

2.2.2 函数 9 

2.2.3 语句 10 

2.2.4 显示字符串 11 

2.3 注释 11 

2.4 变量和赋值 13 

2.4.1 类型 13 

2.4.2 声明 13 

2.4.3 赋值 14 

2.4.4 显示变量的值 15 

2.4.5 初始化 16 

2.4.6 显示表达式的值 17 

2.5 读入输入 17 

2.6 定义常量的名字 18 

2.7 标识符 19 

2.8 C 程序的书写规范 21 

问与答 23 

练习题 25 

编程题 26 

第3章 格式化输入/输出 28 

3.1 printf函数 28 

3.1.1 转换说明 29 

3.1.2 转义序列 31 

3.2 scanf函数 31 

3.2.1 scanf函数的工作方法 32 

3.2.2 格式串中的普通字符 34 

3.2.3 易混淆的printf函数和scanf函数 34 

问与答 35 

练习题 37 

编程题 38 

第4章 表达式 40 

4.1 算术运算符 40 

4.2 赋值运算符 44 

4.2.1 简单赋值 44 

4.2.2 左值 45 

4.2.3 复合赋值 45 

4.3 自增运算符和自减运算符 46 

4.4 表达式求值 47 

4.5 表达式语句 50 

问与答 50 

练习题 52 

编程题 54 

第5章 选择语句 56 

5.1 逻辑表达式 56 

5.1.1 关系运算符 56 

5.1.2 判等运算符 57 

5.1.3 逻辑运算符 57 

5.2 if语句 58 

5.2.1 复合语句 59 

5.2.2 else子句 59 

5.2.3 级联式if语句 61 

5.2.4 “悬空else”的问题 63 

5.2.5 条件表达式 63 

5.2.6 C89中的布尔值 64 

5.2.7 C99中的布尔值 65 

5.3 switch语句 66 

问与答 69 

练习题 72 

编程题 74 

第6章 循环 77 

6.1 while语句 77 

6.2 do语句 80 

6.3 for语句 82 

6.3.1 for语句的惯用法 83 

6.3.2 在for语句中省略表达式 83 

6.3.3 C99中的for语句 84 

6.3.4 逗号运算符 84 

6.4 退出循环 86 

6.4.1 break语句 87 

6.4.2 continue语句 87 

6.4.3 goto语句 88 

6.5 空语句 90 

问与答 92 

练习题 94 

编程题 95 

第7章 基本类型 97 

7.1 整数类型 97 

7.1.1 C99中的整数类型 99 

7.1.2 整型常量 99 

7.1.3 C99中的整型常量 100 

7.1.4 整数溢出 100 

7.1.5 读/写整数 101 

7.2 浮点类型 102 

7.2.1 浮点常量 103 

7.2.2 读/写浮点数 103 

7.3 字符类型 104 

7.3.1 字符操作 104 

7.3.2 有符号字符和无符号字符 105 

7.3.3 算术类型 105 

7.3.4 转义序列 106 

7.3.5 字符处理函数 107 

7.3.6 用scanf和printf读/写字符 108 

7.3.7 用getchar和putchar读/写字符 108 

7.4 类型转换 110 

7.4.1 常规算术转换 111 

7.4.2 赋值过程中的转换 112 

7.4.3 C99中的隐式转换 113 

7.4.4 强制类型转换 114 

7.5 类型定义 115 

7.5.1 类型定义的优点 115 

7.5.2 类型定义和可移植性 116 

7.6 sizeof运算符 117 

问与答 117 

练习题 120 

编程题 121 

第8章 数组 124 

8.1 一维数组 124 

8.1.1 数组下标 124 

8.1.2 数组初始化 126 

8.1.3 指示器 127 

8.1.4 对数组使用sizeof运算符 129 

8.2 多维数组 130 

8.2.1 多维数组初始化 131 

8.2.2 常量数组 132 

8.3 C99 中的变长数组 134 

问与答 135 

练习题 136 

编程题 138 

第9章 函数 141 

9.1 函数的定义和调用 141 

9.1.1 函数定义 144 

9.1.2 函数调用 145 

9.2 函数声明 147 

9.3 实际参数 149 

9.3.1 实际参数的转换 150 

9.3.2 数组型实际参数 151 

9.3.3 变长数组形式参数 153 

9.3.4 在数组参数声明中使用static 154 

9.3.5 复合字面量 155 

9.4 return语句 155 

9.5 程序终止 156 

9.6 递归 157 

9.7 泛型选择 161 

问与答 163 

练习题 166 

编程题 169 

第 10章 程序结构 171 

10.1 局部变量 171 

10.1.1 静态局部变量 172 

10.1.2 形式参数 172 

10.2 外部变量 172 

10.2.1 示例:用外部变量实现栈 172 

10.2.2 外部变量的利与弊 173 

10.3 程序块 177 

10.4 作用域 178 

10.5 构建C程序 179 

问与答 185 

练习题 185 

编程题 186 

第 11章 指针 188 

11.1 指针变量 188 

11.2 取地址运算符和间接寻址运算符 189 

11.2.1 取地址运算符 189 

11.2.2 间接寻址运算符 190 

11.3 指针赋值 191 

11.4 指针作为参数 192 

11.5 指针作为返回值 195 

问与答 196 

练习题 198 

编程题 199 

第 12章 指针和数组 201 

12.1 指针的算术运算 201 

12.1.1 指针加上整数 202 

12.1.2 指针减去整数 202 

12.1.3 两个指针相减 203 

12.1.4 指针比较 203 

12.1.5 指向复合字面量的指针 203 

12.2 指针用于数组处理 204 

12.3 用数组名作为指针 206 

12.3.1 数组型实际参数(改进版) 207 

12.3.2 用指针作为数组名 208 

12.4 指针和多维数组 209 

12.4.1 处理多维数组的元素 209 

12.4.2 处理多维数组的行 210 

12.4.3 处理多维数组的列 210 

12.4.4 用多维数组名作为指针 210 

12.5 C99中的指针和变长数组 211 

问与答 212 

练习题 213 

编程题 215 

第 13章 字符串 217 

13.1 字面串 217 

13.1.1 字面串中的转义序列 217 

13.1.2 延续字面串 218 

13.1.3 如何存储字面串 218 

13.1.4 字面串的操作 219 

13.1.5 字面串与字符常量 219 

13.2 字符串变量 220 

13.2.1 初始化字符串变量 220 

13.2.2 字符数组与字符指针 221 

13.3 字符串的读和写 222 

13.3.1 用printf函数和puts函数写字符串 222 

13.3.2 用scanf函数读字符串 223 

13.3.3 逐个字符读字符串 224 

13.4 访问字符串中的字符 225 

13.5 使用C语言的字符串库 226 

13.5.1 strcpy函数 226 

13.5.2 strlen函数 227 

13.5.3 strcat函数 228 

13.5.4 strcmp函数 229 

13.6 字符串惯用法 231 

13.6.1 搜索字符串的结尾 232 

13.6.2 复制字符串 233 

13.7 字符串数组 235 

问与答 238 

练习题 241 

编程题 243 

第 14章 预处理器 246 

14.1 预处理器的工作原理 246 

14.2 预处理指令 248 

14.3 宏定义 248 

14.3.1 简单的宏 249 

14.3.2 带参数的宏 250 

14.3.3 #运算符 252 

14.3.4 ##运算符 253 

14.3.5 宏的通用属性 254 

14.3.6 宏定义中的圆括号 254 

14.3.7 创建较长的宏 255 

14.3.8 预定义宏 256 

14.3.9 C99中新增的预定义宏 257 

14.3.10 空的宏参数 258 

14.3.11 参数个数可变的宏 259 

14.3.12 __func__标识符 260 

14.4 条件编译 260 

14.4.1 #if指令和#endif指令 260 

14.4.2 defined运算符 261 

14.4.3 #ifdef指令和#ifndef指令 261 

14.4.4 #elif指令和#else指令 262 

14.4.5 使用条件编译 262 

14.5 其他指令 263 

14.5.1 #error指令 263 

14.5.2 #line指令 264 

14.5.3 #pragma指令 265 

14.5.4 _Pragma运算符 265 

问与答 266 

练习题 268 

第 15章 编写大型程序 272 

15.1 源文件 272 

15.2 头文件 273 

15.2.1 #include指令 273 

15.2.2 共享宏定义和类型定义 274 

15.2.3 共享函数原型 275 

15.2.4 共享变量声明 277 

15.2.5 嵌套包含 278 

15.2.6 保护头文件 278 

15.2.7 头文件中的#error指令 279 

15.3 把程序划分成多个文件 279 

15.4 构建多文件程序 285 

15.4.1 makefile 285 

15.4.2 链接期间的错误 287 

15.4.3 重新构建程序 287 

15.4.4 在程序外定义宏 289 

问与答 289 

练习题 291 

编程题 292 

第 16章 结构、联合和枚举 293 

16.1 结构变量 293 

16.1.1 结构变量的声明 293 

16.1.2 结构变量的初始化 295 

16.1.3 指示器 295 

16.1.4 对结构的操作 296 

16.2 结构类型 296 

16.2.1 结构标记的声明 297 

16.2.2 结构类型的定义 298 

16.2.3 结构作为参数和返回值 298 

16.2.4 复合字面量 299 

16.2.5 匿名结构 300 

16.3 嵌套的数组和结构 301 

16.3.1 嵌套的结构 301 

16.3.2 结构数组 302 

16.3.3 结构数组的初始化 302 

16.4 联合 309 

16.4.1 用联合来节省空间 310 

16.4.2 用联合来构造混合的数据结构 312 

16.4.3 为联合添加“标记字段” 312 

16.4.4 匿名联合 313 

16.5 枚举 314 

16.5.1 枚举标记和类型名 315 

16.5.2 枚举作为整数 315 

16.5.3 用枚举声明“标记字段” 316 

问与答 316 

练习题 318 

编程题 323 

第 17章 指针的高级应用 324 

17.1 动态存储分配 324 

17.1.1 内存分配函数 325 

17.1.2 空指针 325 

17.2 动态分配字符串 326 

17.2.1 使用malloc函数为字符串分配内存 326 

17.2.2 在字符串函数中使用动态存储分配 327 

17.2.3 动态分配字符串的数组 327 

17.3 动态分配数组 329 

17.3.1 使用malloc函数为数组分配存储空间 329 

17.3.2 calloc函数 330 

17.3.3 realloc函数 330 

17.4 释放存储空间 331 

17.4.1 free函数 332 

17.4.2 “悬空指针”问题 332 

17.5 链表 332 

17.5.1 声明结点类型 333 

17.5.2 创建结点 333 

17.5.3 -> 运算符 334 

17.5.4 在链表的开始处插入结点 335 

17.5.5 搜索链表 337 

17.5.6 从链表中删除结点 338 

17.5.7 有序链表 339 

17.6 指向指针的指针 344 

17.7 指向函数的指针 345 

17.7.1 函数指针作为参数 345 

17.7.2 qsort函数 346 

17.7.3 函数指针的其他用途 347 

17.8 受限指针 350 

17.9 弹性数组成员 351 

问与答 352 

练习题 355 

编程题 358 

第 18章 声明 359 

18.1 声明的语法 359 

18.2 存储类型 360 

18.2.1 变量的性质 361 

18.2.2 auto存储类型 361 

18.2.3 static存储类型 362 

18.2.4 extern存储类型 363 

18.2.5 register存储类型 363 

18.2.6 函数的存储类型 364 

18.2.7 小结 365 

18.3 类型限定符 366 

18.4 声明符 366 

18.4.1 解释复杂声明 368 

18.4.2 使用类型定义来简化声明 369 

18.5 初始化器 369 

18.6 内联函数 371 

18.6.1 内联定义 371 

18.6.2 对内联函数的限制 372 

18.6.3 在GCC中使用内联函数 372 

18.7 函数指定符_Noreturn和头< stdnoreturn.h>  373 

18.8 静态断言 373 

问与答 374 

练习题 377 

第 19章 程序设计 379 

19.1 模块 379 

19.1.1 内聚性与耦合性 381 

19.1.2 模块的类型 381 

19.2 信息隐藏 381 

19.3 抽象数据类型 385 

19.3.1 封装 385 

19.3.2 不完整类型 386 

19.4 栈抽象数据类型 386 

19.4.1 为栈抽象数据类型定义接口 386 

19.4.2 用定长数组实现栈抽象数据类型 388 

19.4.3 改变栈抽象数据类型中数据项的类型 389 

19.4.4 用动态数组实现栈抽象数据类型 390 

19.4.5 用链表实现栈抽象数据类型 392 

19.5 抽象数据类型的设计问题 394 

19.5.1 命名惯例 394 

19.5.2 错误处理 394 

19.5.3 通用抽象数据类型 394 

19.5.4 新语言中的抽象数据类型 395 

问与答 395 

练习题 396 

编程题 397 

第 20章 底层程序设计 398 

20.1 位运算符 398 

20.1.1 移位运算符 398 

20.1.2 按位取反运算符、按位与运算符、按位异或运算符和按位或运算符 399 

20.1.3 用位运算符访问位 400 

20.1.4 用位运算符访问位域 401 

20.2 结构中的位域 403 

20.3 其他底层技术 405 

20.3.1 定义依赖机器的类型 405 

20.3.2 用联合来提供数据的多个视角 405 

20.3.3 将指针作为地址使用 407 

20.3.4 volatile类型限定符 409 

20.4 对象的对齐 410 

20.4.1 对齐运算符_Alignof 410 

20.4.2 对齐指定符_Alignas和头< stdalign.h>  410 

问与答 411 

练习题 411 

编程题 413 

第 21章 标准库 414 

21.1 标准库的使用 414 

21.1.1 对标准库中所用名字的限制 415 

21.1.2 使用宏隐藏的函数 415 

21.2 C89标准库概述 416 

21.3 C99标准库更新 417 

21.4 < stddef.h> :常用定义 418 

21.5 < stdbool.h> :布尔类型和值 419 

21.6 C11标准库更新 419 

21.7 < stdalign.h> :地址的对齐 420 

21.8 < stdnoreturn.h> :宏noreturn的定义 420 

问与答 420 

练习题 421 

编程题 422 

第 22章 输入/输出 423 

22.1 流 423 

22.1.1 文件指针 424 

22.1.2 标准流和重定向 424 

22.1.3 文本文件与二进制文件 425 

22.2 文件操作 426 

22.2.1 打开文件 426 

22.2.2 模式 427 

22.2.3 关闭文件 428 

22.2.4 为打开的流附加文件 428 

22.2.5 从命令行获取文件名 429 

22.2.6 临时文件 430 

22.2.7 文件缓冲 431 

22.2.8 其他文件操作 432 

22.3 格式化的输入/输出 433 

22.3.1 …printf函数 433 

22.3.2 …printf转换说明 433 

22.3.3 C99对…printf转换说明的修改 435 

22.3.4 …printf转换说明示例 436 

22.3.5 …scanf函数 438 

22.3.6 …scanf格式串 438 

22.3.7 …scanf转换说明 439 

22.3.8 C99对…scanf转换说明的改变 441 

22.3.9 scanf示例 441 

22.3.10 检测文件末尾和错误条件 442 

22.4 字符的输入/输出 444 

22.4.1 输出函数 444 

22.4.2 输入函数 444 

22.5 行的输入/输出 446 

22.5.1 输出函数 446 

22.5.2 输入函数 447 

22.6 块的输入/输出 447 

22.7 文件定位 448 

22.8 字符串的输入/输出 451 

22.8.1 输出函数 451 

22.8.2 输入函数 452 

问与答 452 

练习题 455 

编程题 458 

第 23章 库对数值和字符数据的支持 462 

23.1 < float.h> :浮点类型的特性 462 

23.2 < limits.h> :整数类型的大小 464 

23.3 < math.h> :数学计算(C89) 465 

23.3.1 错误 465 

23.3.2 三角函数 466 

23.3.3 双曲函数 466 

23.3.4 指数函数和对数函数 467 

23.3.5 幂函数 467 

23.3.6 就近舍入函数、绝对值函数和取余函数 468 

23.4 < math.h> :数学计算 468 

23.4.1 IEEE浮点标准 469 

23.4.2 类型 470 

23.4.3 宏 470 

23.4.4 错误 470 

23.4.5 函数 471 

23.4.6 分类宏 471 

23.4.7 三角函数 472 

23.4.8 双曲函数 472 

23.4.9 指数函数和对数函数 473 

23.4.10 幂函数和绝对值函数 474 

23.4.11 误差函数和伽马函数 474 

23.4.12 就近舍入函数 475 

23.4.13 取余函数 476 

23.4.14 操作函数 477 

23.4.15 最大值函数、最小值函数和正差函数 477 

23.4.16 浮点乘加 478 

23.4.17 比较宏 478 

23.5 < ctype.h> :字符处理 479 

23.5.1 字符分类函数 479 

23.5.2 字符大小写映射函数 481 

23.6 < string.h> :字符串处理 482 

23.6.1 复制函数 482 

23.6.2 拼接函数 483 

23.6.3 比较函数 484 

23.6.4 搜索函数 485 

23.6.5 其他函数 487 

问与答 488 

练习题 488 

编程题 490 

第 24章 错误处理 491 

24.1 < assert.h> :诊断 491 

24.2 < errno.h> :错误 492 

24.3 < signal.h> :信号处理 494 

24.3.1 信号宏 494 

24.3.2 signal函数 494 

24.3.3 预定义的信号处理函数 495 

24.3.4 raise函数 496 

24.4 < setjmp.h> :非局部跳转 497 

问与答 499 

练习题 500 

第 25章 国际化特性 502 

25.1 < locale.h> :本地化 502 

25.1.1 类项 503 

25.1.2 setlocale函数 503 

25.1.3 localeconv函数 504 

25.2 多字节字符和宽字符 507 

25.2.1 多字节字符 507 

25.2.2 宽字符 508 

25.2.3 Unicode和通用字符集 508 

25.2.4 Unicode编码 509 

25.2.5 多字节/宽字符转换函数 510 

25.2.6 多字节/宽字符串转换函数 511 

25.3 双联符和三联符 512 

25.3.1 三联符 512 

25.3.2 双联符 513 

25.3.3 < iso646.h> :拼写替换 513 

25.4 通用字符名 514 

25.5 < wchar.h> :扩展的多字节和宽字符实用工具 514 

25.5.1 流的倾向性 515 

25.5.2 格式化宽字符输入/输出函数 515 

25.5.3 宽字符输入/输出函数 517 

25.5.4 通用的宽字符串实用工具 518 

25.5.5 宽字符时间转换函数 521 

25.5.6 扩展的多字节/宽字符转换实用工具 521 

25.6 < wctype.h> :宽字符分类和映射实用工具 523 

25.6.1 宽字符分类函数 524 

25.6.2 可扩展的宽字符分类函数 525 

25.6.3 宽字符大小写映射函数 525 

25.6.4 可扩展的宽字符大小写映射函数 525 

25.7 < uchar.h> :改进的Unicode支持 526 

25.7.1 带u、U和u8前缀的字面串 526 

25.7.2 可重启动的多字节/宽字符转换函数 527 

问与答 528 

练习题 529 

编程题 530 

第 26章 其他库函数 531 

26.1 < stdarg.h> :可变参数 531 

26.1.1 调用带有可变参数列表的函数 533 

26.1.2 v…printf函数 533 

26.1.3 v…scanf函数 534 

26.2 < stdlib.h> :通用的实用工具 534 

26.2.1 数值转换函数 535 

26.2.2 伪随机序列生成函数 537 

26.2.3 与环境的通信 539 

26.2.4 搜索和排序实用工具 540 

26.2.5 整数算术运算函数 542 

26.2.6 地址对齐的内存分配 542 

26.3 < time.h> :日期和时间 542 

26.3.1 时间处理函数 543 

26.3.2 时间转换函数 545 

问与答 550 

练习题 552 

编程题 553 

第 27章 C99对数学计算的新增支持 554 

27.1 < stdint.h> :整数类型 554 

27.1.1 < stdint.h> 类型 555 

27.1.2 对指定宽度整数类型的限制 555 

27.1.3 对其他整数类型的限制 556 

27.1.4 用于整型常量的宏 557 

27.2 < inttypes.h> :整数类型的格式转换 557 

27.2.1 用于格式指定符的宏 557 

27.2.2 用于最大宽度整数类型的函数 558 

27.3 复数 559 

27.3.1 复数的定义 559 

27.3.2 复数的算术运算 560 

27.3.3 C99中的复数类型 561 

27.3.4 复数的运算 561 

27.3.5 复数类型的转换规则 562 

27.4 < complex.h> :复数算术运算 562 

27.4.1 < complex.h> 宏 562 

27.4.2 CX_LIMITED_RANGE编译提示 563 

27.4.3 < complex.h> 函数 564 

27.4.4 三角函数 564 

27.4.5 双曲函数 565 

27.4.6 指数函数和对数函数 565 

27.4.7 幂函数和绝对值函数 566 

27.4.8 操作函数 566 

27.5 < tgmath.h> :泛型数学 567 

27.5.1 泛型宏 568 

27.5.2 调用泛型宏 569 

27.6 < fenv.h> :浮点环境 570 

27.6.1 浮点状态标志和控制模式 570 

27.6.2 < fenv.h> 宏 571 

27.6.3 FENV_ACCESS编译提示 571 

27.6.4 浮点异常函数 572 

27.6.5 舍入函数 573 

27.6.6 环境函数 573 

问与答 573 

练习题 574 

编程题 575 

第 28章 C1X新增的多线程和原子操作支持 576 

28.1 < threads.h> :多线程执行支持 577 

28.1.1 线程启动函数 577 

28.1.2 线程的创建和管理函数 578 

28.1.3 数据竞争 581 

28.1.4 互斥函数 583 

28.1.5 条件变量 585 

28.1.6 条件变量函数 587 

28.1.7 递归锁和非递归锁 591 

28.1.8 初始化函数 591 

28.1.9 _Thread_local 存储类和线程存储期 593 

28.1.10 线程专属存储 595 

28.1.11 线程专属存储函数 596 

28.2 _Atomic、< stdatomic.h> :原子类型和原子操作支持 599 

28.2.1 _Atomic:类型指定符/类型限定符 600 

28.2.2 标准库定义的原子类型 600 

28.2.3 初始化原子变量 601 

28.2.4 原子变量的初始化函数 601 

28.2.5 原子操作 602 

28.2.6 原子操作函数 604 

28.2.7 内存顺序 608 

28.2.8 围栏函数 613 

28.2.9 锁无关判断函数 615 

28.2.10 原子标志类型及其操作函数 616 

问与答 619 

练习题 619 

编程题 620 

附录A C语言运算符 621 

附录B C1X与C99的比较 622 

附录C C99与C89的比较 624 

附录D C89与经典C的比较 628 

附录E标准库函数 631 

附录F ASCII字符集 673 

延伸阅读 674 

索引(图灵社区下载)
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP