C Primer Plus(第6版)(中文版):第六版
¥
11.81
1.3折
¥
89
八五品
库存2件
作者 [美]史蒂芬·普拉达(Stephen Prata) 著;姜佑 译
出版社 人民邮电出版社
出版时间 2016-04
版次 01
装帧 平装
上书时间 2024-08-15
商品详情
品相描述:八五品
图书标准信息
作者
[美]史蒂芬·普拉达(Stephen Prata) 著;姜佑 译
出版社
人民邮电出版社
出版时间
2016-04
版次
01
ISBN
9787115390592
定价
89.00元
装帧
平装
开本
16开
纸张
胶版纸
页数
730页
字数
1412千字
正文语种
简体中文
原版书名
C Primer Plus : 6th
【内容简介】
《C Primer Plus(第6版)中文版》详细讲解了C语言的基本概念和编程技巧。 《C Primer Plus(第6版)中文版》共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第16章、17章介绍C预处理器、C库和高级数据表示。本书以完整的程序为例,讲解C语言的知识要点和注意事项。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。 《C Primer Plus(第6版)中文版》可作为C语言的教材,适用于需要系统学习C语言的初学者,也适用于巩固C语言知识或希望进一步提高编程技术的程序员。
【作者简介】
Stephen Prata曾在加利福尼亚的马林学院(肯特菲尔德)教授天文学、物理学和程序设计课程,现已退休。他在加州理工学院获得学士学位,在加州大学伯克利分校获得博士学位。他接触程序设计,是为了利用计算机给星团建模。Stephen撰写和与他人合著了十几本书籍,其中包括C++ Primer Plus和Unix Primer Plus。
【目录】
第1章 初识C语言1 1.1 C语言的起源1 1.2 选择C语言的理由1 1.2.1 设计特性1 1.2.2 高效性1 1.2.3 可移植性2 1.2.4 强大而灵活3 1.2.5 面向程序员3 1.2.6 缺点3 1.3 C语言的应用范围3 1.4 计算机能做什么4 1.5 高级计算机语言和编译器5 1.6 语言标准6 1.6.1 第1个ANSI/ISO C标准6 1.6.2 C99标准6 1.6.3 C11标准7 1.7 使用C语言的7个步骤7 1.7.1 第1步:定义程序的目标8 1.7.2 第2步:设计程序8 1.7.3 第3步:编写代码8 1.7.4 第4步:编译8 1.7.5 第5步:运行程序9 1.7.6 第6步:测试和调试程序9 1.7.7 第7步:维护和修改代码9 1.7.8 说明9 1.8 编程机制10 1.8.1 目标代码文件、可执行文件和库10 1.8.2 UNIX系统11 1.8.3 GNU编译器集合和LLVM项目13 1.8.4 Linux系统13 1.8.5 PC的命令行编译器14 1.8.6 集成开发环境(Windows)14 1.8.7 Windows/Linux15 1.8.8 Macintosh中的C15 1.9 本书的组织结构15 1.10 本书的约定16 1.10.1 字体16 1.10.2 程序输出16 1.10.3 特殊元素17 1.11 本章小结17 1.12 复习题18 1.13 编程练习18 第2章 C语言概述19 2.1 简单的C程序示例19 2.2 示例解释20 2.2.1 第1遍:快速概要21 2.2.2 第2遍:程序细节21 2.3 简单程序的结构28 2.4 提高程序可读性的技巧28 2.5 进一步使用C29 2.5.1 程序说明30 2.5.2 多条声明30 2.5.3 乘法30 2.5.4 打印多个值30 2.6 多个函数30 2.7 调试程序32 2.7.1 语法错误32 2.7.2 语义错误33 2.7.3 程序状态34 2.8 关键字和保留标识符34 2.9 关键概念35 2.10 本章小结35 2.11 复习题36 2.12 编程练习37 第3章 数据和C39 3.1 示例程序39 3.2 变量与常量数据42 3.3 数据:数据类型关键字42 3.3.1 整数和浮点数43 3.3.2 整数43 3.3.3 浮点数43 3.4 C语言基本数据类型44 3.4.1 int类型44 3.4.2 其他整数类型47 3.4.3 使用字符:char类型50 3.4.4 _Bool类型54 3.4.5 可移植类型:stdint.h和inttypes.h55 3.4.6 float、double和long double56 3.4.7 复数和虚数类型60 3.4.8 其他类型60 3.4.9 类型大小62 3.5 使用数据类型63 3.6 参数和陷阱63 3.7 转义序列示例64 3.7.1 程序运行情况65 3.7.2 刷新输出65 3.8 关键概念66 3.9 本章小结66 3.10 复习题67 3.11 编程练习68 第4章 字符串和格式化输入/输出71 4.1 前导程序71 4.2 字符串简介72 4.2.1 char类型数组和null字符72 4.2.2 使用字符串73 4.2.3 strlen()函数74 4.3 常量和C预处理器76 4.3.1 const限定符78 4.3.2 明示常量78 4.4 printf()和scanf()80 4.4.1 printf()函数80 4.4.2 使用printf()81 4.4.3 printf()的转换说明修饰符83 4.4.4 转换说明的意义87 4.4.5 使用scanf()92 4.4.6 printf()和scanf()的*修饰符95 4.4.7 printf()的用法提示97 4.5 关键概念98 4.6 本章小结98 4.7 复习题99 4.8 编程练习100 第5章 运算符、表达式和语句103 5.1 循环简介103 5.2 基本运算符105 5.2.1 赋值运算符:=105 5.2.2 加法运算符:+107 5.2.3 减法运算符:-107 5.2.4 符号运算符:-和+107 5.2.5 乘法运算符:*108 5.2.6 除法运算符:/110 5.2.7 运算符优先级110 5.2.8 优先级和求值顺序112 5.3 其他运算符113 5.3.1 sizeof运算符和size_t类型113 5.3.2 求模运算符:%114 5.3.3 递增运算符:++115 5.3.4 递减运算符:--118 5.3.5 优先级118 5.3.6 不要自作聪明119 5.4 表达式和语句120 5.4.1 表达式120 5.4.2 语句120 5.4.3 复合语句(块)123 5.5 类型转换124 5.6 带参数的函数127 5.7 示例程序129 5.8 关键概念130 5.9 本章小结130 5.10 复习题131 5.11 编程练习134 第6章 C控制语句:循环137 6.1 再探while循环137 6.1.1 程序注释138 6.1.2 C风格读取循环139 6.2 while语句140 6.2.1 终止while循环140 6.2.2 何时终止循环141 6.2.3 while:入口条件循环141 6.2.4 语法要点141 6.3 用关系运算符和表达式比较大小143 6.3.1 什么是真144 6.3.2 其他真值145 6.3.3 真值的问题146 6.3.4 新的_Bool类型147 6.3.5 优先级和关系运算符148 6.4 不确定循环和计数循环150 6.5 for循环151 6.6 其他赋值运算符:+=、-=、*=、/=、%=155 6.7 逗号运算符156 6.8 出口条件循环:do while159 6.9 如何选择循环161 6.10 嵌套循环162 6.10.1 程序分析163 6.10.2 嵌套变式163 6.11 数组简介164 6.12 使用函数返回值的循环示例166 6.12.1 程序分析168 6.12.2 使用带返回值的函数169 6.13 关键概念169 6.14 本章小结170 6.15 复习题170 6.16 编程练习174 第7章 C控制语句:分支和跳转177 7.1 if语句177 7.2 if else语句179 7.2.1 另一个示例:介绍getchar()和putchar()180 7.2.2 ctype.h系列的字符函数182 7.2.3 多重选择else if184 7.2.4 else与if配对186 7.2.5 多层嵌套的if语句187 7.3 逻辑运算符190 7.3.1 备选拼写:iso646.h头文件191 7.3.2 优先级192 7.3.3 求值顺序192 7.3.4 范围193 7.4 一个统计单词的程序194 7.5 条件运算符:?:196 7.6 循环辅助:continue和break198 7.6.1 continue语句198 7.6.2 break语句200 7.7 多重选择:switch和break202 7.7.1 switch语句204 7.7.2 只读每行的首字符205 7.7.3 多重标签206 7.7.4 switch和if else208 7.8 goto语句208 7.9 关键概念211 7.10 本章小结211 7.11 复习题212 7.12 编程练习214 第8章 字符输入/输出和输入验证217 8.1 单字符I/O:getchar()和putchar()217 8.2 缓冲区218 8.3 结束键盘输入219 8.3.1 文件、流和键盘输入219 8.3.2 文件结尾220 8.4 重定向和文件222 8.5 创建更友好的用户界面226 8.5.1 使用缓冲输入226 8.5.2 混合数值和字符输入228 8.6 输入验证230 8.6.1 分析程序234 8.6.2 输入流和数字234 8.7 菜单浏览235 8.7.1 任务235 8.7.2 使执行更顺利235 8.7.3 混合字符和数值输入237 8.8 关键概念240 8.9 本章小结240 8.10 复习题241 8.11 编程练习241 第9章 函数243 9.1 复习函数243 9.1.1 创建并使用简单函数244 9.1.2 分析程序245 9.1.3 函数参数247 9.1.4 定义带形式参数的函数248 9.1.5 声明带形式参数函数的原型249 9.1.6 调用带实际参数的函数249 9.1.7 黑盒视角250 9.1.8 使用return从函数中返回值250 9.1.9 函数类型252 9.2 ANSI C函数原型253 9.2.1 问题所在253 9.2.2 ANSI的解决方案254 9.2.3 无参数和未指定参数255 9.2.4 函数原型的优点256 9.3 递归256 9.3.1 演示递归256 9.3.2 递归的基本原理258 9.3.3 尾递归258 9.3.4 递归和倒序计算260 9.3.5 递归的优缺点262 9.4 编译多源代码文件的程序262 9.4.1 UNIX263 9.4.2 Linux263 9.4.3 DOS命令行编译器263 9.4.4 Windows和苹果的IDE编译器263 9.4.5 使用头文件263 9.5 查找地址:&运算符267 9.6 更改主调函数中的变量268 9.7 指针简介269 9.7.1 间接运算符:*270 9.7.2 声明指针270 9.7.3 使用指针在函数间通信271 9.8 关键概念274 9.9 本章小结275 9.10 复习题275 9.11 编程练习276 第10章 数组和指针277 10.1 数组277 10.1.1 初始化数组277 10.1.2 指定初始化器(C99)281 10.1.3 给数组元素赋值282 10.1.4 数组边界282 10.1.5 指定数组的大小284 10.2 多维数组284 10.2.1 初始化二维数组287 10.2.2 其他多维数组288 10.3 指针和数组288 10.4 函数、数组和指针290 10.4.1 使用指针形参293 10.4.2 指针表示法和数组表示法294 10.5 指针操作295 10.6 保护数组中的数据298 10.6.1 对形式参数使用const299 10.6.2 const的其他内容300 10.7 指针和多维数组302 10.7.1 指向多维数组的指针304 10.7.2 指针的兼容性305 10.7.3 函数和多维数组306 10.8 变长数组(VLA)309 10.9 复合字面量312 10.10 关键概念314 10.11 本章小结315 10.12 复习题316 10.13 编程练习317 第11章 字符串和字符串函数321 11.1 表示字符串和字符串I/O321 11.1.1 在程序中定义字符串322 11.1.2 指针和字符串328 11.2 字符串输入329 11.2.1 分配空间329 11.2.2 不幸的gets()函数330 11.2.3 gets()的替代品331 11.2.4 scanf()函数336 11.3 字符串输出337 11.3.1 puts()函数338 11.3.2 fputs()函数339 11.3.3 printf()函数339 11.4 自定义输入/输出函数340 11.5 字符串函数342 11.5.1 strlen()函数342 11.5.2 strcat()函数343 11.5.3 strncat()函数345 11.5.4 strcmp()函数346 11.5.5 strcpy()和strncpy()函数351 11.5.6 sprintf()函数356 11.5.7 其他字符串函数357 11.6 字符串示例:字符串排序359 11.6.1 排序指针而非字符串360 11.6.2 选择排序算法361 11.7 ctype.h字符函数和字符串362 11.8 命令行参数363 11.8.1 集成环境中的命令行参数365 11.8.2 Macintosh中的命令行参数365 11.9 把字符串转换为数字365 11.10 关键概念368 11.11 本章小结368 11.12 复习题369 11.13 编程练习371 第12章 存储类别、链接和内存管理373 12.1 存储类别373 12.1.1 作用域374 12.1.2 链接376 12.1.3 存储期376 12.1.4 自动变量377 12.1.5 寄存器变量380 12.1.6 块作用域的静态变量381 12.1.7 外部链接的静态变量382 12.1.8 内部链接的静态变量386 12.1.9 多文件386 12.1.10 存储类别说明符387 12.1.11 存储类别和函数389 12.1.12 存储类别的选择389 12.2 随机数函数和静态变量390 12.3 掷骰子393 12.4 分配内存:malloc()和free()396 12.4.1 free()的重要性399 12.4.2 calloc()函数400 12.4.3 动态内存分配和变长数组400 12.4.4 存储类别和动态内存分配401 12.5 ANSI C类型限定符402 12.5.1 const类型限定符403 12.5.2 volatile类型限定符404 12.5.3 restrict类型限定符405 12.5.4 _Atomic类型限定符(C11)406 12.5.5 旧关键字的新位置406 12.6 关键概念407 12.7 本章小结407 12.8 复习题408 12.9 编程练习409 第13章 文件输入/输出413 13.1 与文件进行通信413 13.1.1 文件是什么413 13.1.2 文本模式和二进制模式413 13.1.3 I/O的级别415 13.1.4 标准文件415 13.2 标准I/O415 13.2.1 检查命令行参数416 13.2.2 fopen()函数416 13.2.3 getc()和putc()函数417 13.2.4 文件结尾418 13.2.5 fclose()函数419 13.2.6 指向标准文件的指针419 13.3 一个简单的文件压缩程序419 13.4 文件I/O:fprintf()、fscanf()、fgets()和fputs()421 13.4.1 fprintf()和fscanf()函数421 13.4.2 fgets()和fputs()函数422 13.5 随机访问:fseek()和ftell()423 13.5.1 fseek()和ftell()的工作原理424 13.5.2 二进制模式和文本模式425 13.5.3 可移植性425 13.5.4 fgetpos()和fsetpos()函数426 13.6 标准I/O的机理426 13.7 其他标准I/O函数427 13.7.1 int ungetc(int c, FILE *fp)函数427 13.7.2 int fflush()函数428 13.7.3 int setvbuf()函数428 13.7.4 二进制I/O:fread()和fwrite()428 13.7.5 size_t fwrite()函数429 13.7.6 size_t fread()函数430 13.7.7 int feof(FILE *fp)和int ferror(FILE *fp)函数430 13.7.8 一个程序示例430 13.7.9 用二进制I/O进行随机访问433 13.8 关键概念435 13.9 本章小结435 13.10 复习题435 13.11 编程练习437 第14章 结构和其他数据形式439 14.1 示例问题:创建图书目录439 14.2 建立结构声明441 14.3 定义结构变量441 14.3.1 初始化结构442 14.3.2 访问结构成员443 14.3.3 结构的初始化器443 14.4 结构数组444 14.4.1 声明结构数组446 14.4.2 标识结构数组的成员447 14.4.3 程序讨论447 14.5 嵌套结构448 14.6 指向结构的指针449 14.6.1 声明和初始化结构指针450 14.6.2 用指针访问成员451 14.7 向函数传递结构的信息451 14.7.1 传递结构成员451 14.7.2 传递结构的地址452 14.7.3 传递结构453 14.7.4 其他结构特性454 14.7.5 结构和结构指针的选择458 14.7.6 结构中的字符数组和字符指针458 14.7.7 结构、指针和malloc()459 14.7.8 复合字面量和结构(C99)462 14.7.9 伸缩型数组成员(C99)463 14.7.10 匿名结构(C11)465 14.7.11 使用结构数组的函数466 14.8 把结构内容保存到文件中467 14.8.1 保存结构的程序示例468 14.8.2 程序要点470 14.9 链式结构471 14.10 联合简介472 14.10.1 使用联合472 14.10.2 匿名联合(C11)473 14.11 枚举类型474 14.11.1 enum常量475 14.11.2 默认值475 14.11.3 赋值475 14.11.4 enum的用法476 14.11.5 共享名称空间477 14.12 typedef简介478 14.13 其他复杂的声明479 14.14 函数和指针481 14.15 关键概念487 14.16 本章小结487 14.17 复习题488 14.18 编程练习490 第15章 位操作493 15.1 二进制数、位和字节493 15.1.1 二进制整数494 15.1.2 有符号整数494 15.1.3 二进制浮点数495 15.2 其他进制数495 15.2.1 八进制495 15.2.2 十六进制496 15.3 C按位运算符496 15.3.1 按位逻辑运算符497 15.3.2 用法:掩码498 15.3.3 用法:打开位(设置位)498 15.3.4 用法:关闭位(清空位)499 15.3.5 用法:切换位499 15.3.6 用法:检查位的值500 15.3.7 移位运算符500 15.3.8 编程示例501 15.3.9 另一个例子503 15.4 位字段505 15.4.1 位字段示例506 15.4.2 位字段和按位运算符509 15.5 对齐特性(C11)515 15.6 关键概念516 15.7 本章小结516 15.8 复习题517 15.9 编程练习518 第16章 C预处理器和C库521 16.1 翻译程序的第一步521 16.2 明示常量:#define522 16.2.1 记号525 16.2.2 重定义常量525 16.3 在#define中使用参数525 16.3.1 用宏参数创建字符串:#运算符527 16.3.2 预处理器黏合剂:##运算符528 16.3.3 变参宏:...和_ _VA_ARGS_ _529 16.4 宏和函数的选择530 16.5 文件包含:#include531 16.5.1 头文件示例531 16.5.2 使用头文件533 16.6 其他指令534 16.6.1 #undef指令534 16.6.2 从C预处理器角度看已定义534 16.6.3 条件编译535 16.6.4 预定义宏539 16.6.5 #line和#error540 16.6.6 #pragma540 16.6.7 泛型选择(C11)541 16.7 内联函数(C99)542 16.8 _Noreturn函数(C11)544 16.9 C库544 16.9.1 访问C库544 16.9.2 使用库描述545 16.10 数学库546 16.10.1 三角问题547 16.10.2 类型变体548 16.10.3 tgmath.h库(C99)550 16.11 通用工具库550 16.11.1 exit()和atexit()函数550 16.11.2 qsort()函数552 16.12 断言库556 16.12.1 assert的用法556 16.12.2 _Static_assert(C11)557 16.13 string.h库中的memcpy()和memmove()558 16.14 可变参数:stdarg.h560 16.15 关键概念562 16.16 本章小结562 16.17 复习题562 16.18 编程练习563 第17章 高级数据表示567 17.1 研究数据表示567 17.2 从数组到链表570 17.2.1 使用链表572 17.2.2 反思576 17.3 抽象数据类型(ADT)576 17.3.1 建立抽象577 17.3.2 建立接口578 17.3.3 使用接口581 17.3.4 实现接口583 17.4 队列ADT589 17.4.1 定义队列抽象数据类型590 17.4.2 定义一个接口590 17.4.3 实现接口数据表示591 17.4.4 测试队列598 17.5 用队列进行模拟600 17.6 链表和数组605 17.7 二叉查找树608 17.7.1 二叉树ADT608 17.7.2 二叉查找树接口609 17.7.3 二叉树的实现611 17.7.4 使用二叉树624 17.7.5 树的思想628 17.8 其他说明629 17.9 关键概念630 17.10 本章小结630 17.11 复习题630 17.12 编程练习631 附录A 复习题答案633 附录B 参考资料665 B.1 参考资料I:补充阅读665 B.2 参考资料II:C运算符667 B.3 参考资料III:基本类型和存储类别671 B.4 参考资料IV:表达式、语句和程序流675 B.5 参考资料V:新增C99和C11的ANSI C库679 B.6 参考资料VI:扩展的整数类型714 B.7 参考资料VII:扩展字符支持716 B.8 参考资料VIII:C99/C11数值计算增强720 B.9 参考资料IX:C和C++的区别726
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价