《图灵程序设计丛书:征服C指针》被称为日本最有营养的C参考书。作者是日本著名的“毒舌程序员”,其言辞犀利,观点鲜明,往往能让读者迅速领悟要领。书中结合了作者多年的编程经验和感悟,从C语言指针的概念讲起,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧。另外,还通过独特的方式教会我们怎样解读C语言那些让人“纠结”的声明语法,如何绕过C指针的陷阱。
第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 C10
1.1.5 C的宝典——K&R11
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 typedef141
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
《豹迹:与记忆有关》内容简介:他是国际知名的美术史家,在艺术研究领域举足轻重,同时他也是当代重要的艺术评论者,从西方艺术、
《单片机原理及接口技术习题详解与实验指导》是与《单片机原理及接口技术》(修订本)配套的辅助教材。《单片机原理及接口技术习
安藤忠雄的都市彷徨一书,主要汇集1965年至1992年於世界游历中思考的轨迹与心路历程的反省,藉由旅游,造就了建筑师的深度与成长
《富强竞争:工业文化与国家兴衰》内容简介:富强,是社会主义核心价值观之首,也是古今中外各个国家、民族孜孜以求的核心价值观,
尼可拉斯.卡爾(NicholasG.Carr)知名作家兼思想家,專研商業策略、資訊科技及兩者的交叉點,在《哈佛商業評論》寫過包括〈IT沒有
unity,也称unity3d,是近几年非常流行的一个3d游戏开发引擎,跨平台能力强,使用它开发的手机游戏数不胜数。《unity3d手机游戏开
《南京传》内容简介:春归秣陵树,人老建康城。作为一位公认的文章大家,叶兆言对他写了四十年的南京有着独特理解。南京为他提供了
《与大师同行》内容简介:经济思想的产生和发展,经历了一段漫长的历史。对于初学者来讲,穿越时间隧道的历程,充满着诸多的不确定
中国互联网治理问题研究 本书特色 《中国互联网治理问题研究》:国际互联网治理的启示·中国互联网治理综述·网络文化环境治理·未成年人网络权益保护·虚拟社区管理·网...
《详解AutoCAD 2022机械设计(第6版)》内容简介:本书结合典型机械设计案例,详细讲解AutoCAD 2022机械设计的知识要点,让读者在学
《一千零一夜(新版)》内容简介:《一千零一夜》又名《天方夜谭》。相传一国王因王后与人私通,心中愤恨,将王后处死之后,便每夜
《王牌战机图鉴(白金版)》内容简介:本书精心选取了世界各国空军装备的近百种经典战机。战斗机、轰炸机、反潜战机、武装直升机、
《王维诗集》内容简介:王维是盛唐时期的著名诗人,苏轼赞他“味摩诘之诗,诗中有画;观摩诘之画,画中有诗”,尤以山水诗成就为最
人脸表情识别算法及应用 本书特色 让机器看懂你的眼神为读者提供一本反映当前表情识别系统发展水平的专业参考书籍。人脸表情识别算法及应用 内容简介 本书主要研究了表...
《典型半导体团簇及组装材料的结构和电子特性》内容简介:典型半导体团簇及其团簇组装材料的结构及其电子性质的研究是当前团簇科学
RobinWilliams世界著名的设计师、技术专家和畅销书作家。通过写书和授课,她已经影响了整整一代数字设计师。同时,作为Adobe和Ma
《平面设计材料表现与特殊效果》是一本涉及到数百种处理方式的指导书,并讲述了在你的设计中如何正确运用这些处理方式的相关知识
《数据虚拟化》内容简介:本书介绍了在当前大数据、人工智能的背景下,使用数据虚拟化技术实现多源异构数据集成的方法。本书共9章,
计算机免疫系统及其应用 本书特色 本书是作者对人工免疫系统研究的工作总结,主要介绍了人工免疫系统中的否定选择算法、危险理论、免疫克隆算法在网络异常检测、网络安全...
《人人都要会理财》内容简介:从投资理财应有的理念与心态、各类投资品的特性及如何挑选适合的投资品、如何控制风险、如何选择理财