第5页 | C Primer Plus 中文版 | 阅读 ‧ 电子书库

同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库

目  录

前  言

第1章 概  览

1.1 C语言的起源1.2 使用C语言的理由1.2.1 设计特性1.2.2 高效性1.2.3 可移植性1.2.4 强大的功能和灵活性1.2.5 面向编程人员1.2.6 缺点1.3 C语言的发展方向1.4 计算机工作的基本原理1.5 高级计算机语言和编译器1.6 使用C语言的7个步骤1.6.1 第1步:定义程序目标1.6.2 第2步:设计程序1.6.3 第3步:编写代码1.6.4 第4步:编译1.6.5 第5步:运行程序1.6.6 第6步:测试和调试程序1.6.7 第7步:维护和修改程序1.6.8 总结1.7 编程机制1.7.1 目标代码文件、可执行文件和库1.7.2 UNIX系统1.7.3 Linux系统1.7.4 集成开发环境(Windows系统下)1.7.5 IBM PC的DOS编译器1.7.6 Macintosh上的C1.8 语言标准1.8.1 第1个ANSI/ISO C标准1.8.2 C99 标准1.9 本书的组织结构1.10 本书体例1.10.1 字体1.10.2 屏幕输出1.11 总结1.12 复习题1.13 编程练习

第2章 C语言概述

2.1 C语言的一个简单实例2.2 实例说明2.2.1 第一遍 快速简介2.2.2 第二遍 程序细节2.3 一个简单程序的结构2.4 使程序可读的技巧2.5 更进一步2.5.1 说明2.5.2 多个声明2.5.3 乘法2.5.4 输出多个值2.6 多个函数2.7 调试2.7.1 语法错误2.7.2 语义错误2.7.3 程序状态2.8 关键字和保留标识符2.9 关键概念2.10 总结2.11 复习题2.12 编程练习

第3章 数据和C

3.1 示例程序3.2 变量与常量数据3.3 数据:数据类型关键字3.3.1 整数类型与浮点数类型3.3.2 整数3.3.3 浮点数3.4 C数据类型3.4.1 int类型3.4.2 其他整数类型3.4.3 使用字符:char类型3.4.4 _Bool类型3.4.5 可移植的类型:inttypes.h3.4.6 float、double和long double类型3.4.7 复数和虚数类型3.4.8 其他类型3.4.9 类型大小3.5 使用数据类型3.6 参数和易犯的错误3.7 另一个例子:转义序列3.7.1 过程分析3.7.2 刷新输出3.8 关键概念3.9 总结3.10 复习题3.11 编程练习

第4章 字符串和格式化输入/输出

4.1 前导程序4.2 字符串简介4.2.1 char数组类型和空字符4.2.2 使用字符串4.2.3 strlen()函数4.3 常量和C预处理器4.3.1 const修饰符4.3.2 系统定义的明显常量4.4 研究和利用printf()和scanf()4.4.1 printf()函数4.4.2 使用printf()4.4.3 printf()的转换说明修饰符4.4.4 转换说明的意义4.4.5 使用scanf( )4.4.6 printf( )和scanf( )的*修饰符4.4.7 printf的用法提示4.5 关键概念4.6 总结4.7 复习题4.8 编程练习

第5章 运算符、表达式和语句

5.1 循环简介5.2 基本运算符5.2.1 赋值运算符:=5.2.2 加法运算符:+5.2.3 减法运算符:-5.2.4 符号运算符:-和+5.2.5 乘法运算符:*5.2.6 除法运算符:/5.2.7 运算符的优先级5.2.8 优先级和求值顺序5.3 其他运算符5.3.1 sizeof运算符和size_t类型5.3.2 取模运算符:%5.3.3 增量和减量运算符:++和--5.3.4 减量:--5.3.5 优先级5.3.6 不要太聪明5.4 表达式和语句5.4.1 表达式5.4.2 语句5.4.3 复合语句(代码块)5.5 类型转换5.6 带有参数的函数5.7 一个示例程序5.8 关键概念5.9 总结5.10 复习题5.11 编程练习

第6章 C控制语句:循环

6.1 再探while循环6.1.1 程序注解6.1.2 C风格的读循环6.2 while语句6.2.1 终止while循环6.2.2 循环何时终止6.2.3 while:入口条件循环6.2.4 语法要点6.3 比较大小:使用关系运算符和表达式6.3.1 什么是真6.3.2 还有什么是真6.3.3 真值的问题6.3.4 新的_Bool类型6.3.5 关系运算符的优先级6.4 不确定循环与计数循环6.5 for循环6.6 更多赋值运算符:+=、-=、*=、/=和%=6.7 逗号运算符6.8 退出条件循环:do while6.9 选择哪种循环6.10 嵌套循环6.10.1 程序讨论6.10.2 嵌套变化6.11 数组6.12 使用函数返回值的循环例子6.12.1 程序讨论6.12.2 使用具有返回值的函数6.13 关键概念6.14 总结6.15 复习题6.16 编程练习

第7章 C控制语句:分支和跳转

7.1 if语句7.2 在if语句中添加else关键字7.2.1 另一个例子:介绍getchar()和putchar()7.2.2 ctype.h系列字符函数7.2.3 多重选择else if7.2.4 把else与if配对7.2.5 多层嵌套的if7.3 获得逻辑性7.3.1 改变拼写法:iso646.h头文件7.3.2 优先级7.3.3 求值的顺序7.3.4 范围7.4 一个统计字数的程序7.5 条件运算符?:7.6 循环辅助手段:continue和break7.6.1 continue语句7.6.2 break语句7.7 多重选择:switch和break7.7.1 使用switch语句7.7.2 只读取一行的首字符7.7.3 多重标签7.7.4 switch和if else7.8 goto语句7.9 关键概念7.10 总结7.11 复习题7.12 编程练习

第8章 字符输入/输出和输入确认

8.1 单字符I/O:getchar()和putchar()8.2 缓冲区8.3 终止键盘输入8.3.1 文件、流和键盘输入8.3.2 文件结尾8.4 重定向和文件8.5 创建一个更友好的用户界面8.5.1 使用缓冲输入8.5.2 混合输入数字和字符8.6 输入确认8.6.1 分析程序8.6.2 输入流和数值8.7 菜单浏览8.7.1 任务8.7.2 使执行更顺利8.7.3 混合字符和数值输入8.8 关键概念8.9 总结8.10 复习题8.11 编程练习

第9章 函  数

9.1 函数概述9.1.1 编写和使用一个简单的函数9.1.2 程序分析9.1.3 函数参数9.1.4 定义带有参数的函数:形式参量9.1.5 带参数函数的原型声明9.1.6 调用带有参数的函数:实际参数9.1.7 黑盒子观点9.1.8 使用return从函数中返回一个值9.1.9 函数类型9.2 ANSI C的函数原型9.2.1 产生的问题9.2.2 ANSI的解决方案9.2.3 无参数和不确定参数9.2.4 函数原型的优点9.3 递归9.3.1 递归的使用9.3.2 递归的基本原理9.3.3 尾递归9.3.4 递归和反向计算9.3.5 递归的优缺点9.4 多源代码文件程序的编译9.4.1 UNIX9.4.2 Linux9.4.3 DOS命令行编译器9.4.4 Windows和Macintosh编译器9.4.5 头文件的使用9.5 地址运算符:&9.6 改变调用函数中的变量9.7 指针简介9.7.1 间接运算符:*9.7.2 指针声明9.7.3 使用指针在函数间通信9.8 关键概念9.9 总结9.10 复习题9.11 编程练习

第10章 数组和指针

10.1 数组10.1.1 初始化10.1.2 指定初始化项目(C99)10.1.3 为数组赋值10.1.4 数组边界10.1.5 指定数组大小10.2 多维数组10.2.1 初始化二维数组10.2.2 更多维数的数组10.3 指针和数组10.4 函数、数组和指针10.4.1 使用指针参数10.4.2 评论:指针和数组10.5 指针操作10.6 保护数组内容10.6.1 对形式参量使用const10.6.2 有关const的其他内容10.7 指针和多维数组10.7.1 指向多维数组的指针10.7.2 指针兼容性10.7.3 函数和多维数组10.8 变长数组(VLA)10.9 复合文字10.10 关键概念10.11 总结10.12 复习题10.13 编程练习

第11章 字符串和字符串函数

11.1 字符串表示和字符串I/O11.1.1 在程序中定义字符串11.1.2 指针和字符串11.2 字符串输入11.2.1 创建存储空间11.2.2 gets()函数11.2.3 fgets()函数11.2.4 scanf()函数11.3 字符串输出11.3.1 puts()函数11.3.2 fputs()函数11.3.3 printf()函数11.4 自定义字符串输入/输出函数11.5 字符串函数11.5.1 strlen()函数11.5.2 strcat()函数11.5.3 strncat()函数11.5.4 strcmp()函数11.5.5 strncmp()变种11.5.6 strcpy()和strncpy()函数11.5.7 sprintf()函数11.5.8 其他字符串函数11.6 字符串例子:字符串排序11.6.1 排序指针而不是字符串11.6.2 选择排序算法11.7 ctype.h字符函数和字符串11.8 命令行参数11.8.1 集成环境下的命令行参数11.8.2 Macintosh的命令行参数11.9 把字符串转换为数字11.10 关键概念11.11 总结11.12 复习题11.13 编程练习

第12章 存储类、链接和内存管理

12.1 存储类12.1.1 作用域12.1.2 链接12.1.3 存储时期12.1.4 自动变量12.1.5 寄存器变量12.1.6 具有代码块作用域的静态变量12.1.7 具有外部链接的静态变量12.1.8 具有内部链接的静态变量12.1.9 多文件12.2 存储类说明符12.3 存储类和函数12.4 随机数函数和静态变量12.5 掷骰子12.6 分配内存:malloc()和free()12.6.1 free()的重要性12.6.2 函数calloc()12.6.3 动态内存分配与变长数组12.6.4 存储类与动态内存分配12.7 ANSI C的类型限定词12.7.1 类型限定词const12.7.2 类型限定词volatile12.7.3 类型限定词restrict12.7.4 旧关键字的新位置12.8 关键概念12.9 总结12.10 复习题12.11 编程练习

第13章 文件输入/输出

13.1 和文件进行通信13.1.1 文件是什么13.1.2 文本视图和二进制视图13.1.3 I/O级别13.1.4 标准文件13.2 标准I/O13.2.1 检查命令行参数13.2.2 fopen()函数13.2.3 getc()函数和putc()函数13.2.4 文件结尾13.2.5 fclose()函数13.2.6 标准文件指针13.3 一个简单的文件压缩程序13.4 文件I/O:fprintf()、fscanf()、fgets()和fputs()函数13.4.1 fprintf()和fscanf()函数13.4.2 fgets()和fputs()函数13.4.3 注释:gets()函数和fgets()函数13.5 随机存取:fseek()和ftell()函数13.5.1 fseek()和ftell()如何工作13.5.2 二进制模式和文本模式13.5.3 可移植性13.5.4 fgetpos()和fsetpos()函数13.6 标准I/O内幕13.7 其他标准I/O函数13.7.1 int ungetc(int c, FILE * fp)函数13.7.2 int fflush()函数13.7.3 int setvbuf()函数13.7.4 二进制I/O:fread()和fwrite()函数13.7.5 size_t fwrite()函数13.7.6 size_t fread()函数13.7.7 int feof(FILE * fp)和int ferror(FILE * fp)函数13.7.8 一个fread()和fwrite()的例子13.7.9 使用二进制I/O进行随机存取13.8 关键概念13.9 总结13.10 复习题13.11 编程练习

第14章 结构和其他数据形式

14.1 示例问题:创建图书目录14.2 建立结构声明14.3 定义结构变量14.3.1 初始化结构14.3.2 访问结构成员14.3.3 结构的指定初始化项目14.4 结构数组14.4.1 声明结构数组14.4.2 标识结构数组的成员14.4.3 程序讨论14.5 嵌套结构14.6 指向结构的指针14.6.1 声明和初始化结构指针14.6.2 使用指针访问成员14.7 向函数传递结构信息14.7.1 传递结构成员14.7.2 使用结构地址14.7.3 把结构作为参数传递14.7.4 其他结构特性14.7.5 结构,还是指向结构的指针14.7.6 在结构中使用字符数组还是字符指针14.7.7 结构、指针和malloc()14.7.8 复合文字和结构(C99)14.7.9 伸缩型数组成员(C99)14.7.10 使用结构数组的函数14.8 把结构内容保存到文件中14.8.1 一个结构保存的实例14.8.2 程序要点14.9 结构:下一步是什么14.10 联合简介14.11 枚举类型14.11.1 enum常量14.11.2 默认值14.11.3 指定值14.11.4 enum用法14.11.5 共享的名字空间14.12 typedef简介14.13 奇特的声明14.14 函数和指针14.15 关键概念14.16 总结14.17 复习题14.18 编程练习

第15章 位 操 作

15.1 二进制数、位和字节15.1.1 二进制整数15.1.2 有符号整数15.1.3 二进制浮点数15.2 其他基数15.2.1 八进制15.2.2 十六进制15.3 C的位运算符15.3.1 位逻辑运算符15.3.2 用法:掩码15.3.3 用法:打开位15.3.4 用法:关闭位15.3.5 用法:转置位15.3.6 用法:查看一位的值15.3.7 移位运算符15.3.8 编程实例15.3.9 另一个实例15.4 位字段15.4.1 位字段实例15.4.2 位字段和位运算符15.5 关键概念15.6 总结15.7 复习题15.8 编程练习

第16章 C预处理器和C库

16.1 翻译程序的第一步16.2 明显常量:#define16.2.1 语言符号16.2.2 重定义常量16.3 在#define中使用参数16.3.1 利用宏参数创建字符串:#运算符16.3.2 预处理器的粘合剂:##运算符16.3.3 可变宏:…和__VA_ARGS__16.4 宏,还是函数16.5 文件包含:#include16.5.1 头文件:一个实例16.5.2 使用头文件16.6 其他指令16.6.1 #undef指令16.6.2 已定义:C预处理器的观点16.6.3 条件编译16.6.4 预定义宏16.6.5 #line和#error16.6.6 #pragma16.7 内联函数16.8 C库16.8.1 访问C库16.8.2 参考库描述16.9 数学库16.10 通用工具库16.10.1 exit( )和atexit( )函数16.10.2 qsort( )函数16.11 诊断库16.12 string.h库中的memcpy( )和memmove( )16.13 可变参数:stdarg.h16.14 关键概念16.15 总结16.16 复习题16.17 编程练习

第17章 高级数据表示

17.1 研究数据表示17.2 从数组到链表17.2.1 使用链表17.2.2 反思17.3 抽象数据类型(ADT)17.3.1 变得抽象17.3.2 构造接口17.3.3 使用接口17.3.4 实现接口17.4 队列ADT17.4.1 定义队列抽象数据类型17.4.2 定义接口17.4.3 实现接口的数据表示17.4.4 测试队列17.5 用队列进行模拟17.6 链表与数组17.7 二叉搜索树17.7.1 二叉树ADT17.7.2 二叉搜索树的接口17.7.3 二叉树的实现17.7.4 试用树17.7.5 树的思想17.8 其他说明17.9 关键概念17.10 总结17.11 复习题17.12 编程练习

附录A 复习题答案

附录B 参考资料

B.1 参考资料1:参阅书籍B.2 参考资料2:C运算符B.3 参考资料3:基本类型和存储类B.4 参考资料4:表达式、语句和程序流B.5 参考资料5:添加了C99的标准ANSI C库B.6 参考资料6:扩展的整数类型B.7 参考资料7:扩展的字符支持B.8 参考资料8:C99的数值计算增强B.9 参考资料9:C和C++的差别

请支持我们,让我们可以支付服务器费用。
使用微信支付打赏


上一页 · 目录下一页


下载 · 书页 · 阅读 ‧ 电子书库