日本“毒舌”程序员透彻讲解指针、数组和声明! 原版长销20年,累计印刷20次! 1.畅销书全面升级 新版基于64位操作系统大幅修订,新增对C99、C11标准内容的介绍。 2.直学习难,为你讲透C指针的真正用法 作者言辞犀利,观鲜明,擅长将复杂的知识浅显易懂地讲清楚,其以“毒舌”的文风为读者揭示了指针的各种使用技巧,能够让读者在轻松愉快的氛围中迅速领悟要领。
售 价:¥
纸质售价:¥73.70购买纸书
6.6
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

前言
第0章 本书目标与读者对象
0-1 本书目标
0-2 读者对象与内容结构
第1章 打好基础——预备知识和复习
1-1 C 语言是什么样的语言
1-1-1 C 语言的发展历程
1-1-2 不完备和不统一的语法
1-1-3 C 语言“圣经”——K&R
1-1-4 ANSI C 之前的 C 语言
1-1-5 ANSI C(C89/90)
1-1-6 C95
1-1-7 C99
1-1-8 C11
1-1-9 C 语言的理念
1-1-10 C 语言的主体
1-1-11 C 语言曾是只能使用标量的语言
1-2 内存和地址
1-2-1 内存和地址
1-2-2 内存和变量
1-2-3 内存和程序运行
1-3 关于指针
1-3-1 恶名昭著的指针究竟是什么
1-3-2 和指针的第一次亲密接触
1-3-3 地址运算符、间接运算符、下标运算符
1-3-4 指针和地址之间的微妙关系
1-3-5 指针运算
1-3-6 何谓空指针
1-3-7 实践——从函数返回多个值
1-4 关于数组
1-4-1 使用数组
1-4-2 数组与指针的微妙关系
1-4-3 下标运算符 [] 与数组毫无关系
1-4-4 为何存在指针运算这种奇怪功能
1-4-5 别再滥用指针运算了
1-4-6 试图将数组作为函数参数传递
1-4-7 声明函数形参的方法
1-4-8 C99 中的可变长数组
第2章 做个实验——C 语言是怎样使用内存的
2-1 虚拟地址
2-2 C 语言中内存的使用方法
2-2-1 C 语言中变量的种类
2-2-2 尝试输出地址
2-3 函数与字符串字面量
2-3-1 只读内存区域
2-3-2 指向函数的指针
2-4 静态变量
2-4-1 什么是静态变量
2-4-2 分割编译与链接
2-5 自动变量(栈)
2-5-1 内存空间的“重复使用”
2-5-2 函数调用究竟发生了什么
2-5-3 自动变量的引用
2-5-4 典型的安全漏洞——缓冲区溢出漏洞
2-5-5 可变长参数
2-5-6 递归调用
2-5-7 C99 中的可变长数组(VLA)的栈
2-6 利用malloc()动态分配内存(堆)
2-6-1 malloc() 的基础知识
2-6-2 malloc() 是系统调用吗
2-6-3 malloc() 中发生了什么
2-6-4 free() 之后相应的内存空间会怎样
2-6-5 碎片化
2-6-6 malloc() 以外的动态内存分配函数
2-7 对齐
2-8 字节序
2-9 关于语言规范和实现——抱歉,前面的内容都是骗你的
第3章 语法揭秘——它到底是怎么回事
3-1 解读C语言声明
3-1-1 用英语阅读
3-1-2 解读 C 语言声明
3-1-3 类型名
3-2 C语言数据类型的模型
3-2-1 基本类型和派生类型
3-2-2 指针类型的派生
3-2-3 数组类型的派生
3-2-4 什么是指向数组的指针
3-2-5 C 语言中不存在多维数组
3-2-6 函数类型的派生
3-2-7 计算类型的长度
3-2-8 基本类型
3-2-9 结构体和联合体
3-2-10 不完全类型
3-3 表达式
3-3-1 表达式和数据类型
3-3-2 什么是左值——变量的两张面孔
3-3-3 数组→指针的转换
3-3-4 与数组和指针相关的运算符
■ 间接运算符
■ 地址运算符
■ 下标运算符
■ -> 运算符
3-3-5 多维数组
3-4 解读C语言声明(续)
3-4-1 const 修饰符
3-4-2 如何使用 const ?可以用到哪种程度
3-4-3 typedef
3-5 其他
3-5-1 函数形参的声明(ANSI C 版)
3-5-2 函数形参的声明(C99 版)
3-5-3 关于空的下标运算符 []
3-5-4 字符串字面量
3-5-5 关于指向函数的指针引发的混乱
3-5-6 强制类型转换
3-5-7 练习——解读复杂声明
3-6 请记住:数组与指针截然不同
3-6-1 你为什么感到混乱
3-6-2 在表达式中
3-6-3 在声明中
第4章 数组和指针的常见用法
4-1 基本用法
4-1-1 通过返回值以外的方法返回
4-1-2 将数组作为函数的参数传递
4-1-3 动态数组——通过 malloc() 分配的可变长数组
4-2 组合使用
4-2-1 动态数组的数组
4-2-2 动态数组的动态数组
4-2-3 命令行参数
4-2-4 通过参数返回指针
4-2-5 将多维数组作为函数的参数传递
4-2-6 将多维数组作为函数的参数传递(VLA 版)
4-2-7 通过 malloc() 分配纵横可变的二维数组(C99)
4-2-8 数组的动态数组
4-2-9 在考虑可变之前,不妨考虑使用结构体
4-2-10 可变长结构体(ANSI C 版)
4-2-11 柔性数组成员(C99)
第5章 数据结构——指针的真正用法
5-1 案例学习1:计算单词的使用频率
5-1-1 案例的需求
5-1-2 设计
5-1-3 数组版
5-1-4 链表版
5-1-5 添加查找功能
5-1-6 其他数据结构
■ 双向链表
■ 树形结构
■ 哈希
5-2 案例学习2:绘图工具的数据结构
5-2-1 案例的需求
5-2-2 表示各种图形
5-2-3 Shape 类型
5-2-4 讨论——还有其他方法吗
5-2-5 图形的组合
5-2-6 通过指向函数的指针的数组分配处理
5-2-7 通往继承与多态之路
5-2-8 指针的可怕之处
5-2-9 那么,指针到底是什么呢
第6章 其他——拾遗
6-1 新的函数组
6-1-1 添加了范围检查的函数(C11)
6-1-2 无须使用静态存储空间的函数(C11)
6-2 陷阱
6-2-1 整数提升
6-2-2 如果在(老式的)C 语言中使用 float 类型的参数
6-2-3 printf() 与 scanf()
6-2-4 原型声明的光与影
6-3 惯用写法
6-3-1 结构体声明
6-3-2 自引用结构体
6-3-3 结构体的相互引用
6-3-4 结构体的嵌套
6-3-5 联合体
6-3-6 无名结构体和无名联合体(C11)
6-3-7 数组的初始化
6-3-8 指向 char 的指针的数组的初始化
6-3-9 结构体的初始化
6-3-10 联合体的初始化
6-3-11 指定初始化(C99)
6-3-12 复合字面量(C99)
参考文献
作者简介
看完了
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜