目录
第0章 本书的目标与结构——引言 1
0.1 本书的目标 1
0.2 目标读者和内容结构 3
第1章 从基础开始——预备知识和复习 7
1.1 C是什么样的语言 7
1.1.1 比喻 7
1.1.2 C的发展历程 8
1.1.3 不完备和不统一的语法 9
1.1.4 ANSI C 10
1.1.5 C的宝典——K&R 11
1.1.6 C的理念 12
1.1.7 C的主体 14
1.1.8 C是只能使用标量的语言 15
1.2 关于指针 16
1.2.1 恶名昭著的指针究竟是什么 16
1.2.2 和指针的第一次亲密接触 17
1.2.3 指针和地址之间的微妙关系 23
1.2.4 指针运算 26
1.2.5 什么是空指针 27
1.2.6 实践——swap函数 31
1.3 关于数组 34
1.3.1 运用数组 34
1.3.2 数组和指针的微妙关系 37
1.3.3 下标运算符[]和数组是没有关系的 39
1.3.4 为什么存在奇怪的指针运算 42
1.3.5 不要滥用指针运算 43
1.3.6 试图将数组作为函数的参数进行传递 45
1.3.7 声明函数形参的方法 48
第2章 做个实验见分晓——C是怎么使用内存的 51
2.1 虚拟地址 51
2.2 C的内存的使用方法 56
2.2.1 C的变量的种类 56
2.2.2 输出地址 58
2.3 函数和字符串常量 61
2.3.1 只读内存区域 61
2.3.2 指向函数的指针 62
2.4 静态变量 64
2.4.1 什么是静态变量 64
2.4.2 分割编译和连接 64
2.5 自动变量(栈) 66
2.5.1 内存区域的“重复使用” 66
2.5.2 函数调用究竟发生了什么 66
2.5.3 可变长参数 73
2.5.4 递归调用 80
2.6 利用malloc()来进行动态内存分配(堆) 84
2.6.1 malloc()的基础 84
2.6.2 malloc()是“系统调用”吗 88
2.6.3 malloc()中发生了什么 89
2.6.4 free()之后,对应的内存区域会怎样 91
2.6.5 碎片化 93
2.6.6 malloc()以外的动态内存分配函数 94
2.7 内存布局对齐 98
2.8 字节排序 101
2.9 关于开发语言的标准和实现——对不起,前面的内容都是忽悠的 102
第3章 揭秘C的语法——它到底是怎么回事 105
3.1 解读C的声明 105
3.1.1 用英语来阅读 105
3.1.2 解读C的声明 106
3.1.3 类型名 109
3.2 C的数据类型的模型 111
3.2.1 基本类型和派生类型 111
3.2.2 指针类型派生 112
3.2.3 数组类型派生 113
3.2.4 什么是指向数组的指针 114
3.2.5 C语言中不存在多维数组! 116
3.2.6 函数类型派生 117
3.2.7 计算类型的大小 119
3.2.8 基本类型 121
3.2.9 结构体和共用体 122
3.2.10 不完全类型 123
3.3 表达式 125
3.3.1 表达式和数据类型 125
3.3.2 “左值”是什么——变量的两张面孔 129
3.3.3 将数组解读成指针 130
3.3.4 数组和指针相关的运算符 132
3.3.5 多维数组 133
3.4 解读C的声明(续) 137
3.4.1 const修饰符 137
3.4.2 如何使用const?可以使用到什么程度? 139
3.4.3 typedef 141
3.5 其他 143
3.5.1 函数的形参的声明 143
3.5.2 关于空的下标运算符[] 146
3.5.3 字符串常量 148
3.5.4 关于指向函数的指针引起的混乱 151
3.5.5 强制类型转换 152
3.5.6 练习——挑战那些复杂的声明 153
3.6 应该记住:数组和指针是不同的事物 157
3.6.1 为什么会引起混乱 157
3.6.2 表达式之中 158
3.6.3 声明 160
第4章 数组和指针的常用方法 161
4.1 基本的使用方法 161
4.1.1 以函数返回值之外的方式来返回值 161
4.1.2 将数组作为函数的参数传递 162
4.1.3 可变长数组 163
4.2 组合使用 166
4.2.1 可变长数组的数组 166
4.2.2 可变长数组的可变长数组 172
4.2.3 命令行参数 174
4.2.4 通过参数返回指针 177
4.2.5 将多维数组作为函数的参数传递 181
4.2.6 数组的可变长数组 182
4.2.7 纠结于“可变”之前,不妨考虑使用结构体 183
4.3 违反标准的技巧 187
4.3.1 可变长结构体 187
4.3.2 从1开始的数组 189
第5章 数据结构——真正的指针的使用方法 193
5.1 案例学习1:计算单词的出现频率 193
5.1.1 案例的需求 193
5.1.2 设计 195
5.1.3 数组版 200
5.1.4 链表版 203
5.1.5 追加检索功能 211
5.1.6 其他的数据结构 214
5.2 案例学习2:绘图工具的数据结构 218
5.2.1 案例的需求 218
5.2.2 实现各种图形的数据模型 219
5.2.3 Shape型 221
5.2.4 讨论——还有别的方法吗 223
5.2.5 图形的组合 228
5.2.6 继承和多态之道 233
5.2.7 对指针的恐惧 236
5.2.8 说到底,指针究竟是什么 237
第6章 其他——拾遗 239
6.1 陷阱 239
6.1.1 关于strncpy() 239
6.1.2 如果在早期的C中使用float类型的参数 240
6.1.3 printf()和scanf() 242
6.1.4 原型声明的光和影 243
6.2 惯用句法 245
6.2.1 结构体声明 245
6.2.2 自引用型结构体 246
6.2.3 结构体的相互引用 247
6.2.4 结构体的嵌套 248
6.2.5 共用体 249
6.2.6 数组的初始化 250
6.2.7 char数组的初始化 250
6.2.8 指向char的指针的数组的初始化 251
6.2.9 结构体的初始化 252
6.2.10 共用体的初始化 252
6.2.11 全局变量的声明 253
【展开】
【收起】
内容简介
《图灵程序设计丛书:征服C指针》被称为日本最有营养的C参考书。作者是日本著名的“毒舌程序员”,其言辞犀利,观点鲜明,往往能让读者迅速领悟要领。书中结合了作者多年的编程经验和感悟,从C语言指针的概念讲起,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧。另外,还通过独特的方式教会我们怎样解读C语言那些让人“纠结”的声明语法,如何绕过C指针的陷阱。
【展开】
【收起】
下载说明
1、追日是作者栎年创作的原创作品,下载链接均为网友上传的的网盘链接!
2、相识电子书提供优质免费的txt、pdf等下载链接,所有电子书均为完整版!
下载链接
热门评论
-
研究者July的评论对于眼前这本《征服C 指针》,我只想说:名副其实,看着爽,看着舒服,是我读过的最喜欢的一本C 语言书,大力推荐!
-
xslidian的评论读过《征服C指针》 ★★★★★ “第三次重读,每节都有亮点,适合电子阅读。C 系列最深刻的书。不适合新手。如果觉得没用,过个三五年再看造化” 网页链接
-
乐观自信爱一生的评论K&R中同时也记载了下面这段文字, C的声明语法,特别是包含指向函数指针的语法,受到了严厉的批评。 《征服C指针》Web版 网页链接
-
ThreeZhiWang的评论一个民族的性格和他写出书的风格,真是一样一样的,比如黑客与画家,比如30天自制操作系统,征服C指针。
-
冒充萌二的互联网考古爱好者盖子的评论《征服 C 指针》里最大的亮点其实是前言:“觉得 C 语言很烂的读者,你即使计划了什么‘去揍 Dennis Ritchie’之旅,我也不会参加的。但如果有‘去揍 James Gosling'之旅,那我还是有点心动的。”[哼]
-
冒充萌二的互联网考古爱好者盖子的评论我在今年 6 月 22 日发了微博,指出《征服 C 指针》里,void (*signal(int sig, void (*func)(int)))(int); 的解释:signal 是返回“指向返回 void 参数为 int 的函数的指针”的函数,它有两个参数,一个是 int,另一个是“指向返回 void 参数为 int 的[指针的]函数的指针”。有误,果然是一处勘误。
-
BenjaminZhong的评论图灵社区 : 图书 : 征服C指针(Kindle版本)(分享自 @图灵社区) 网页链接
-
灿烂的小飞的评论#一天一段文# 15 1971年,Ken Tompson的同事Dennis Ritchie对B语言做了改良,追加了char数据类型,并且让B语言可以直接生成PDP-11的机器代码,曾经在很短的时间内,大家讲这门语言称为NB(New B)。之后,NB改称为C语言——这就是C语言的诞生——《征服C指针》[日本]前桥和弥网页链接
-
噯迗朝噯菏蟹-傲娇蟹的评论这几天看了下明解C语言和征服C指针,收获很大。。。再看看国内的老谭。。。悲叹!
-
Kevin_Ye_717的评论#快分享#【征服C指针】日本著名毒舌程序猿为你揭开C指针的真实面纱,C程序猿必读经典!下载请戳:网页链接