计算机
类型
9.5
豆瓣评分
可以朗读
语音朗读
367千字
字数
2020-09-01
发行日期
展开全部
主编推荐语
本书提供了与C语言编程相关的全面资源和深入讨论。
内容简介
本书通过对指针的基础知识和特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。
全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。
本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。
目录
- 版权信息
- 内容提要
- 前言
- 第1章 快速上手
- 1.1 简介
- 1.1.1 空白和注释
- 1.1.2 预处理指令
- 1.1.3 main函数
- 1.1.4 read_column_numbers函数
- 1.1.5 rearrange函数
- 1.2 补充说明
- 1.3 编译
- 1.4 总结
- 1.5 警告的总结
- 1.6 编程提示的总结
- 1.7 问题
- 1.8 编程练习
- 第2章 基本概念
- 2.1 环境
- 2.1.1 翻译
- 2.1.2 执行
- 2.2 词法规则
- 2.2.1 字符
- 2.2.2 注释
- 2.2.3 自由形式的源代码
- 2.2.4 标识符
- 2.2.5 程序的形式
- 2.3 程序风格
- 2.4 总结
- 2.5 警告的总结
- 2.6 编程提示的总结
- 2.7 问题
- 2.8 编程练习
- 第3章 数据
- 3.1 基本数据类型
- 3.1.1 整型家族
- 3.1.2 浮点类型
- 3.1.3 指针
- 3.2 基本声明
- 3.2.1 初始化
- 3.2.2 声明简单数组
- 3.2.3 声明指针
- 3.2.4 隐式声明
- 3.3 typedef
- 3.4 常量
- 3.5 作用域
- 3.5.1 代码块作用域
- 3.5.2 文件作用域
- 3.5.3 原型作用域
- 3.5.4 函数作用域
- 3.6 链接属性
- 3.7 存储类型
- 3.8 static关键字
- 3.9 作用域、存储类型示例
- 3.10 总结
- 3.11 警告的总结
- 3.12 编程提示的总结
- 3.13 问题
- 第4章 语句
- 4.1 空语句
- 4.2 表达式语句
- 4.3 代码块
- 4.4 if语句
- 4.5 while语句
- 4.5.1 break和continue语句
- 4.5.2 while语句的执行过程
- 4.6 for语句
- 4.7 do语句
- 4.8 switch语句
- 4.8.1 switch中的break语句
- 4.8.2 default子句
- 4.8.3 switch语句的执行过程
- 4.9 goto语句
- 4.10 总结
- 4.11 警告的总结
- 4.12 编程提示的总结
- 4.13 问题
- 4.14 编程练习
- 第5章 操作符和表达式
- 5.1 操作符
- 5.1.1 算术操作符
- 5.1.2 移位操作符
- 5.1.3 位操作符
- 5.1.4 赋值操作符
- 5.1.5 单目操作符
- 5.1.6 关系操作符
- 5.1.7 逻辑操作符
- 5.1.8 条件操作符
- 5.1.9 逗号操作符
- 5.1.10 下标引用、函数调用和结构成员
- 5.2 布尔值
- 5.3 左值和右值
- 5.4 表达式求值
- 5.4.1 隐式类型转换
- 5.4.2 算术转换
- 5.4.3 操作符的属性
- 5.4.4 优先级和求值的顺序
- 5.5 总结
- 5.6 警告的总结
- 5.7 编程提示的总结
- 5.8 问题
- 5.9 编程练习
- 第6章 指针
- 6.1 内存和地址
- 6.2 值和类型
- 6.3 指针变量的内容
- 6.4 间接访问操作符
- 6.5 未初始化和非法的指针
- 6.6 NULL指针
- 6.7 指针、间接访问和左值
- 6.8 指针、间接访问和变量
- 6.9 指针常量
- 6.10 指针的指针
- 6.11 指针表达式
- 6.12 实例
- 6.13 指针运算
- 6.13.1 算术运算
- 6.13.2 关系运算
- 6.14 总结
- 6.15 警告的总结
- 6.16 编程提示的总结
- 6.17 问题
- 6.18 编程练习
- 第7章 函数
- 7.1 函数定义
- 7.2 函数声明
- 7.2.1 原型
- 7.2.2 函数的缺省认定
- 7.3 函数的参数
- 7.4 ADT和黑盒
- 7.5 递归
- 7.5.1 追踪递归函数
- 7.5.2 递归与迭代
- 7.6 可变参数列表
- 7.6.1 stdarg宏
- 7.6.2 可变参数的限制
- 7.7 总结
- 7.8 警告的总结
- 7.9 编程提示的总结
- 7.10 问题
- 7.11 编程练习
- 第8章 数组
- 8.1 一维数组
- 8.1.1 数组名
- 8.1.2 下标引用
- 8.1.3 指针与下标
- 8.1.4 指针的效率
- 8.1.5 数组和指针
- 8.1.6 作为函数参数的数组名
- 8.1.7 声明数组参数
- 8.1.8 初始化
- 8.1.9 不完整的初始化
- 8.1.10 自动计算数组长度
- 8.1.11 字符数组的初始化
- 8.2 多维数组
- 8.2.1 存储顺序
- 8.2.2 数组名
- 8.2.3 下标
- 8.2.4 指向数组的指针
- 8.2.5 作为函数参数的多维数组
- 8.2.6 初始化
- 8.2.7 数组长度自动计算
- 8.3 指针数组
- 8.4 总结
- 8.5 警告的总结
- 8.6 编程提示的总结
- 8.7 问题
- 8.8 编程练习
- 第9章 字符串、字符和字节
- 9.1 字符串基础
- 9.2 字符串长度
- 9.3 不受限制的字符串函数
- 9.3.1 复制字符串
- 9.3.2 连接字符串
- 9.3.3 函数的返回值
- 9.3.4 字符串比较
- 9.4 长度受限的字符串函数
- 9.5 字符串查找基础
- 9.5.1 查找一个字符
- 9.5.2 查找任何几个字符
- 9.5.3 查找一个子串
- 9.6 高级字符串查找
- 9.6.1 查找一个字符串前缀
- 9.6.2 查找标记
- 9.7 错误信息
- 9.8 字符操作
- 9.8.1 字符分类
- 9.8.2 字符转换
- 9.9 内存操作
- 9.10 总结
- 9.11 警告的总结
- 9.12 编程提示的总结
- 9.13 问题
- 9.14 编程练习
- 第10章 结构和联合
- 10.1 结构基础知识
- 10.1.1 结构声明
- 10.1.2 结构成员
- 10.1.3 结构成员的直接访问
- 10.1.4 结构成员的间接访问
- 10.1.5 结构的自引用
- 10.1.6 不完整的声明
- 10.1.7 结构的初始化
- 10.2 结构、指针和成员
- 10.2.1 访问指针
- 10.2.2 访问结构
- 10.2.3 访问结构成员
- 10.2.4 访问嵌套的结构
- 10.2.5 访问指针成员
- 10.3 结构的存储分配
- 10.4 作为函数参数的结构
- 10.5 位段
- 10.6 联合
- 10.6.1 变体记录
- 10.6.2 联合的初始化
- 10.7 总结
- 10.8 警告的总结
- 10.9 编程提示的总结
- 10.10 问题
- 10.11 编程练习
- 第11章 动态内存分配
- 11.1 为什么使用动态内存分配
- 11.2 malloc和free
- 11.3 calloc和realloc
- 11.4 使用动态分配的内存
- 11.5 常见的动态内存错误
- 11.6 内存分配实例
- 11.7 总结
- 11.8 警告的总结
- 11.9 编程提示的总结
- 11.10 问题
- 11.11 编程练习
- 第12章 使用结构和指针
- 12.1 链表
- 12.2 单链表
- 12.2.1 在单链表中插入
- 12.2.2 其他链表操作
- 12.3 双链表
- 12.3.1 在双链表中插入
- 12.3.2 其他链表操作
- 12.4 总结
- 12.5 警告的总结
- 12.6 编程提示的总结
- 12.7 问题
- 12.8 编程练习
- 第13章 高级指针话题
- 13.1 进一步探讨指向指针的指针
- 13.2 高级声明
- 13.3 函数指针
- 13.3.1 回调函数
- 13.3.2 转移表
- 13.4 命令行参数
- 13.4.1 传递命令行参数
- 13.4.2 处理命令行参数
- 13.5 字符串常量
- 13.6 总结
- 13.7 警告的总结
- 13.8 编程提示的总结
- 13.9 问题
- 13.10 编程练习
- 第14章 预处理器
- 14.1 预定义符号
- 14.2 #define
- 14.2.1 宏
- 14.2.2 #define替换
- 14.2.3 宏与函数
- 14.2.4 带副作用的宏参数
- 14.2.5 命名约定
- 14.2.6 #undef
- 14.2.7 命令行定义
- 14.3 条件编译
- 14.3.1 是否被定义
- 14.3.2 嵌套指令
- 14.4 文件包含
- 14.4.1 函数库文件包含
- 14.4.2 本地文件包含
- 14.4.3 嵌套文件包含
- 14.5 其他指令
- 14.6 总结
- 14.7 警告的总结
- 14.8 编程提示的总结
- 14.9 问题
- 14.10 编程练习
- 第15章 输入/输出函数
- 15.1 错误报告
- 15.2 终止执行
- 15.3 标准I/O函数库
- 15.4 ANSI I/O概念
- 15.4.1 流
- 15.4.2 文件
- 15.4.3 标准I/O常量
- 15.5 流I/O总览
- 15.6 打开流
- 15.7 关闭流
- 15.8 字符I/O
- 15.8.1 字符I/O宏
- 15.8.2 撤销字符I/O
- 15.9 未格式化的行I/O
- 15.10 格式化的行I/O
- 15.10.1 scanf家族
- 15.10.2 scanf格式代码
- 15.10.3 printf家族
- 15.10.4 printf格式代码
- 15.11 二进制I/O
- 15.12 刷新和定位函数
- 15.13 改变缓冲方式
- 15.14 流错误函数
- 15.15 临时文件
- 15.16 文件操纵函数
- 15.17 总结
- 15.18 警告的总结
- 15.19 编程提示的总结
- 15.20 问题
- 15.21 编程练习
- 第16章 标准函数库
- 16.1 整型函数
- 16.1.1 算术 <stdlib.h>
- 16.1.2 随机数<stdlib.h>
- 16.1.3 字符串转换 <stdlib.h>
- 16.2 浮点型函数
- 16.2.1 三角函数 <math.h>
- 16.2.2 双曲函数 <math.h>
- 16.2.3 对数和指数函数 <math.h>
- 16.2.4 浮点表示形式 <math.h>
- 16.2.5 幂 <math.h>
- 16.2.6 底数、顶数、绝对值和余数 <math.h>
- 16.2.7 字符串转换 <stdlib.h>
- 16.3 日期和时间函数
- 16.3.1 处理器时间 <time.h>
- 16.3.2 当天时间 <time.h>
- 16.3.3 日期和时间的转换 <time.h>
- 16.4 非本地跳转 <setjmp.h>
- 16.4.1 实例
- 16.4.2 何时使用非本地跳转
- 16.5 信号
- 16.5.1 信号名 <signal.h>
- 16.5.2 处理信号 <signal.h>
- 16.5.3 信号处理函数
- 16.6 打印可变参数列表 <stdarg.h>
- 16.7 执行环境
- 16.7.1 终止执行 <stdlib.h>
- 16.7.2 断言<assert.h>
- 16.7.3 环境 <stdlib.h>
- 16.7.4 执行系统命令 <stdlib.h>
- 16.7.5 排序和查找<stdlib.h>
- 16.8 locale
- 16.8.1 数值和货币格式 <locale.h>
- 16.8.2 字符串和locale <string.h>
- 16.8.3 改变locale的效果
- 16.9 总结
- 16.10 警告的总结
- 16.11 编程提示的总结
- 16.12 问题
- 16.13 编程练习
- 第17章 经典抽象数据类型
- 17.1 内存分配
- 17.2 堆栈
- 17.2.1 堆栈接口
- 17.2.2 实现堆栈
- 17.3 队列
- 17.3.1 队列接口
- 17.3.2 实现队列
- 17.4 树
- 17.4.1 在二叉搜索树中插入
- 17.4.2 从二叉搜索树删除节点
- 17.4.3 在二叉搜索树中查找
- 17.4.4 树的遍历
- 17.4.5 二叉搜索树接口
- 17.4.6 实现二叉搜索树
- 17.5 实现的改进
- 17.5.1 拥有超过一个的堆栈
- 17.5.2 拥有超过一种的类型
- 17.5.3 名字冲突
- 17.5.4 标准函数库的ADT
- 17.6 总结
- 17.7 警告的总结
- 17.8 编程提示的总结
- 17.9 问题
- 17.10 编程练习
- 第18章 运行时环境
- 18.1 判断运行时环境
- 18.1.1 测试程序
- 18.1.2 静态变量和初始化
- 18.1.3 堆栈帧
- 18.1.4 寄存器变量
- 18.1.5 外部标识符的长度
- 18.1.6 判断堆栈帧布局
- 18.1.7 表达式的副作用
- 18.2 C和汇编语言的接口
- 18.3 运行时效率
- 18.4 总结
- 18.5 警告的总结
- 18.6 编程提示的总结
- 18.7 问题
- 18.8 编程练习
- 附录 部分问题和编程练习的答案
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。