展开全部

主编推荐语

本书提供了与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日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。