• 征服C指针 第2版
21年品牌 40万+商家 超1.5亿件商品

征服C指针 第2版

全新正版 极速发货

61.13 6.2折 99 全新

库存5件

广东广州
认证卖家担保交易快速发货售后保障

作者(日)前桥和弥

出版社人民邮电出版社

ISBN9787115554895

出版时间2021-03

装帧平装

开本16开

定价99元

货号1202308328

上书时间2024-07-16

曲奇书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
前桥和弥(作者)
1969年出生,著有《自制编程语言》《掌握C语言》《Java之谜和陷阱》等,其一针见血的“毒舌”文风和对编程语言深刻的见地受到广大读者的欢迎。

朱文佳(译者)
2005年毕业于上海大学计算机科学与技术学院,在对日通信行业从事开发及管理十余年,具有丰富的嵌入式C语言开发及项目管理经验。爱好阅读,自学日语,愿尽自己绵薄之力为大家分享很好的外国图书。

目录
第0章本书目标与读者对象1

0-1本书目标2

0-2读者对象与内容结构5

第1章打好基础——预备知识和复习9

1-1C语言是什么样的语言10

1-1-1C语言的发展历程10

是汇编语言还是汇编器11

B语言是什么样的语言12

1-1-2不完备和不统一的语法13

1-1-3C语言“圣经”——K&R13

1-1-4ANSIC之前的C语言14

1-1-5ANSIC(C89/90)16

1-1-6C9516

1-1-7C9917

1-1-8C1118

1-1-9C语言的理念19

1-1-10C语言的主体20

1-1-11C语言曾是只能使用标量的语言21

1-2内存和地址23

1-2-1内存和地址23

1-2-2内存和变量25

size_t类型27

1-2-3内存和程序运行27

1-3关于指针29

1-3-1恶名昭著的指针究竟是什么29

1-3-2和指针的第一次亲密接触30

1-3-3地址运算符、间接运算符、下标运算符34

关于本书中的地址值——16进制表示法35

混乱的声明——如何自然地理解声明35

杂谈:hoge是什么37

1-3-4指针和地址之间的微妙关系38

在运行时既没有类型信息,也没有变量名40

1-3-5指针运算41

1-3-6何谓空指针42

NULL和0和\043

1-3-7实践——从函数返回多个值46

形参与实参50

1-4关于数组51

1-4-1使用数组51

C语言的数组是从0开始的53

1-4-2数组与指针的微妙关系54

1-4-3下标运算符[]与数组毫无关系56

语法糖59

1-4-4为何存在指针运算这种奇怪功能59

1-4-5别再滥用指针运算了61

更改参数的做法可取吗62

1-4-6试图将数组作为函数参数传递63

如果对数组进行值传递65

1-4-7声明函数形参的方法66

C语言为什么不进行数组边界检查67

1-4-8C99中的可变长数组68

第2章做个实验——C语言是怎样使用内存的71

2-1虚拟地址72

关于scanf()75

未定义、未指定、实现定义77

2-2C语言中内存的使用方法78

2-2-1C语言中变量的种类78

2-2-2尝试输出地址80

存储类说明符80

2-3函数与字符串字面量85

2-3-1只读内存区域85

2-3-2指向函数的指针86

2-4静态变量88

2-4-1什么是静态变量88

2-4-2分割编译与链接88

2-5自动变量(栈)91

2-5-1内存空间的“重复使用”91

2-5-2函数调用究竟发生了什么91

调用约定95

2-5-3自动变量的引用95

一旦函数执行结束,自动变量的内存空间就会被释放98

2-5-4典型的安全漏洞——缓冲区溢出漏洞99

操作系统针对缓冲区溢出漏洞给出的对策102

2-5-5可变长参数103

assert()106

试写一个用于调试的函数107

2-5-6递归调用110

2-5-7C99中的可变长数组(VLA)的栈113

2-6利用malloc()动态分配内存(堆)116

2-6-1malloc()的基础知识116

应该强制转换malloc()的返回值类型吗119

2-6-2malloc()是系统调用吗119

2-6-3malloc()中发生了什么120

2-6-4free()之后相应的内存空间会怎样122

Valgrind124

2-6-5碎片化124

2-6-6malloc()以外的动态内存分配函数125

假如malloc()参数为0127

malloc()的返回值检查128

程序结束时也必须调用free()吗129

2-7对齐131

结构体的成员名称在运行时也是缺失的134

2-8字节序135

2-9关于语言规范和实现——抱歉,前面的内容都是骗你的137

第3章语法揭秘——它到底是怎么回事139

3-1解读C语言声明140

3-1-1用英语阅读140

3-1-2解读C语言声明141

近来的语言多数是将类型后置的144

3-1-3类型名145

如果把间接运算符*后置146

3-2C语言数据类型的模型147

3-2-1基本类型和派生类型147

3-2-2指针类型的派生148

3-2-3数组类型的派生150

3-2-4什么是指向数组的指针150

3-2-5C语言中不存在多维数组152

3-2-6函数类型的派生154

3-2-7计算类型的长度155

3-2-8基本类型157

3-2-9结构体和联合体159

3-2-10不接近类型159

3-3表达式162

3-3-1表达式和数据类型162

对“表达式”使用sizeof164

3-3-2什么是左值——变量的两张面孔166

“左值”的由来167

3-3-3数组→指针的转换168

3-3-4与数组和指针相关的运算符169

3-3-5多维数组171

运算符的优先级173

3-4解读C语言声明(续)176

3-4-1const修饰符176

3-4-2如何使用const?可以用到哪种程度178

const可以代替#define吗181

3-4-3typedef181

3-5其他185

3-5-1函数形参的声明(ANSIC版)185

K&R中关于函数形参声明的说明186

3-5-2函数形参的声明(C99版)188

3-5-3关于空的下标运算符[]189

定义与声明191

3-5-4字符串字面量192

字符串字面量是char的数组194

3-5-5关于指向函数的指针引发的混乱195

3-5-6强制类型转换196

3-5-7练习——解读复杂声明198

3-6请记住:数组与指针截然不同203

3-6-1你为什么感到混乱203

3-6-2在表达式中204

3-6-3在声明中206

第4章数组和指针的常见用法209

4-1基本用法210

4-1-1通过返回值以外的方法返回210

4-1-2将数组作为函数的参数传递211

4-1-3动态数组——通过malloc()分配的可变长数组212

其他语言的数组214

4-2组合使用216

4-2-1动态数组的数组216

宽字符223

4-2-2动态数组的动态数组225

4-2-3命令行参数228

4-2-4通过参数返回指针230

什么是“双指针”235

4-2-5将多维数组作为函数的参数传递236

4-2-6将多维数组作为函数的参数传递(VLA版)237

4-2-7通过malloc()分配纵横可变的二维数组(C99)239

C语言中的多维数组是行优先的240

纵横可变的二维数组的ANSIC实现241

Java和C#的多维数组242

4-2-8数组的动态数组243

4-2-9在考虑可变之前,不妨考虑使用结构体244

4-2-10可变长结构体(ANSIC版)246

关于分配可变长结构体时的长度指定248

4-2-11柔性数组成员(C99)248

指针可以指向数组的最后一个元素的下一个元素249

第5章数据结构——指针的真正用法251

5-1案例学习1:计算单词的使用频率252

5-1-1案例的需求252

各种语言中指针的叫法253

引用传递253

5-1-2设计256

关于头文件的写法259

5-1-3数组版261

5-1-4链表版265

头文件的公有和私有271

当需要同时处理多个数据时272

迭代器273

5-1-5添加查找功能275

翻倍游戏277

5-1-6其他数据结构277

5-2案例学习2:绘图工具的数据结构283

5-2-1案例的需求283

5-2-2表示各种图形284

关于坐标系285

5-2-3Shape类型286

5-2-4讨论——还有其他方法吗289

能保存任何类型的链表293

5-2-5图形的组合294

5-2-6通过指向函数的指针的数组分配处理300

5-2-7通往继承与多态之路302

将draw()放入Shape中真的好吗302

5-2-8指针的可怕之处304

5-2-9那么,指针到底是什么呢305

第6章其他——拾遗307

6-1新的函数组308

6-1-1添加了范围检查的函数(C11)308

restrict关键字310

6-1-2无须使用静态存储空间的函数(C11)311

6-2陷阱314

6-2-1整数提升314

6-2-2如果在(老式的)C语言中使用float类型的参数316

6-2-3printf()与scanf()318

6-2-4原型声明的光与影319

6-3惯用写法321

6-3-1结构体声明321

6-3-2自引用结构体322

6-3-3结构体的相互引用323

6-3-4结构体的嵌套324

6-3-5联合体325

6-3-6无名结构体和无名联合体(C11)326

6-3-7数组的初始化327

6-3-8指向char的指针的数组的初始化328

6-3-9结构体的初始化329

6-3-10联合体的初始化330

6-3-11指定初始化(C99)331

6-3-12复合字面量(C99)332

参考文献334

内容摘要
本书以C语言中的重难点“指针”为主题,提供了程序员所需的深入而完整的指针知识。作者结合多年的编程经验和感悟,从C指针的概念讲起,通过实验一步一步地揭示了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧,还通过独特的方式告诉读者怎样解读C语言那些让人“纠结”的声明语法,以及如何绕过C指针的陷阱等。第2版基于64位操作系统对内容进行了大幅修订,新增了对ISO-C99、C11标准下相关内容的介绍等。

本书很好适合C语言中级学习者阅读,也可作为计算机专业学生学习C语言的参考。

主编推荐
日本“毒舌”程序员透彻讲解指针、数组和声明!
原版长销20年,累计印刷20次!

1.畅销书全面升级
新版基于64位操作系统大幅修订,新增对C99、C11标准内容的介绍。
2.直击学习难点,为你讲透C指针的真正用法
作者言辞犀利,观点鲜明,擅长将复杂的知识浅显易懂地讲清楚,其以“毒舌”的文风为读者揭示了指针的各种使用技巧,能够让读者在轻松愉快的氛围中迅速领悟要领。
3.一线程序员二十余年经验沉淀,常读常新
作者结合多年编程经验与感悟,从指针的概念讲起,通过实验一步一步地解释了指针与数组、内存、数据结构的关系等,教会读者如何解读C语言“奇葩”的声明语法、如何绕过C指针的陷阱等,每次阅读都能有新的收获。
4.配套代码资源可下载。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP