深入理解C指针

出版社:人民邮电出版社
出版日期:2014-2
ISBN:9787115344489
作者:[美] Richard Reese
页数:204页

内容概要

作者简介 :
Richard Reese
华盛顿州塔尔顿州立大学副教授。Reese自2002年起就在塔尔顿州立大学教授计算机科学课程,此前在洛克希德•马丁公司做过十年的软件开发。Reese著有多本技术图书,包括Oracle Certified Associate,Java SE 7 Programmer Study Guide,Java 7 New Features Cookbook,EJB 3.1 CookBook等。
译者简介:
陈晓亮
美团网iOS工程师,长期关注Linux、iOS、C、Objective-C,推崇C语言,认为程序员的C功底会直接影响Objective-C代码质量。他重视用户体验,喜欢干净的代码,业余时间喜欢读书,经常与大家探讨技术问题,译有《iOS6编程实战》。

书籍目录

前言  XI
第1章 认识指针  1
1.1  指针和内存  2
1.1.1  为什么要精通指针  3
1.1.2  声明指针  5
1.1.3  如何阅读声明  6
1.1.4  地址操作符  7
1.1.5  打印指针的值  8
1.1.6  用间接引用操作符解引指针  10
1.1.7  指向函数的指针  10
1.1.8  null 的概念  10
1.2  指针的长度和类型  14
1.2.1  内存模型  14
1.2.2  指针相关的预定义类型  15
1.3  指针操作符  18
1.3.1  指针算术运算  19
1.3.2  比较指针  23
1.4  指针的常见用法  23
1.4.1  多层间接引用  23
1.4.2  常量与指针  24
1.5  小结  29
第2章 C 的动态内存管理  31
2.1  动态内存分配  32
2.2  动态内存分配函数  36
2.2.1  使用malloc 函数  36
2.2.2  使用calloc 函数  39
2.2.3  使用realloc 函数  40
2.2.4  alloca 函数和变长数组  42
2.3  用free 函数释放内存  43
2.3.1  将已释放的指针赋值为NULL  44
2.3.2  重复释放  44
2.3.3  堆和系统内存  45
2.3.4  程序结束前释放内存  46
2.4  迷途指针  46
2.4.1  迷途指针示例  47
2.4.2  处理迷途指针  48
2.4.3  调试器对检测内存泄漏的支持  49
2.5  动态内存分配技术  49
2.5.1 C 的垃圾回收  50
2.5.2  资源获取即初始化  50
2.5.3  使用异常处理函数  51
2.6  小结  52
第3章 指针和函数  53
3.1  程序的栈和堆  53
3.1.1  程序栈  54
3.1.2  栈帧的组织  55
3.2  通过指针传递和返回数据  57
3.2.1  用指针传递数据  57
3.2.2  用值传递数据  58
3.2.3  传递指向常量的指针  59
3.2.4  返回指针  60
3.2.5  局部数据指针  61
3.2.6  传递空指针  62
3.2.7  传递指针的指针  63
3.3  函数指针  66
3.3.1  声明函数指针  66
3.3.2  使用函数指针  67
3.3.3  传递函数指针  69
3.3.4  返回函数指针  69
3.3.5  使用函数指针数组  70
3.3.6  比较函数指针  71
3.3.7  转换函数指针  71
3.4  小结  72
第4章 指针和数组  75
4.1  数组概述  76
4.1.1  一维数组  76
4.1.2  二维数组  77
4.1.3  多维数组  78
4.2  指针表示法和数组  78
4.3  用malloc 创建一维数组  81
4.4  用realloc 调整数组长度  82
4.5  传递一维数组  85
4.5.1  用数组表示法  85
4.5.2  用指针表示法  86
4.6  使用指针的一维数组  87
4.7  指针和多维数组  89
4.8  传递多维数组  91
4.9  动态分配二维数组  94
4.9.1  分配可能不连续的内存  94
4.9.2  分配连续内存  95
4.10  不规则数组和指针  96
4.11  小结  99
第5章 指针和字符串  101
5.1  字符串基础  101
5.1.1  字符串声明  102
5.1.2  字符串字面量池  103
5.1.3  字符串初始化  104
5.2  标准字符串操作  108
5.2.1  比较字符串  108
5.2.2  复制字符串  109
5.2.3  拼接字符串   111
5.3  传递字符串  114
5.3.1  传递简单字符串  114
5.3.2  传递字符常量的指针  116
5.3.3  传递需要初始化的字符串  116
5.3.4  给应用程序传递参数  118
5.4  返回字符串  119
5.4.1  返回字面量的地址  119
5.4.2  返回动态分配内存的地址  120
5.5  函数指针和字符串  122
5.6  小结  124
第6章 指针和结构体  125
6.1  介绍  125
6.2  结构体释放问题  128
6.3  避免malloc/free 开销  131
6.4  用指针支持数据结构  133
6.4.1  单链表  134
6.4.2  用指针支持队列  141
6.4.3  用指针支持栈  143
6.4.4  用指针支持树  145
6.5  小结  148
第7章 安全问题和指针误用  149
7.1  指针的声明和初始化  150
7.1.1  不恰当的指针声明  150
7.1.2  使用指针前未初始化  151
7.1.3  处理未初始化指针  151
7.2  指针的使用问题  152
7.2.1  测试NULL  153
7.2.2  错误使用解引操作  153
7.2.3  迷途指针  154
7.2.4  越过数组边界访问内存  154
7.2.5  错误计算数组长度  155
7.2.6  错误使用sizeof 操作符  156
7.2.7  一定要匹配指针类型  156
7.2.8  有界指针  157
7.2.9  字符串的安全问题  157
7.2.10  指针算术运算和结构体  158
7.2.11  函数指针的问题  160
7.3  内存释放问题  161
7.3.1  重复释放  162
7.3.2  清除敏感数据  162
7.4  使用静态分析工具  163
7.5  小结  164
第8章 其他重要内容  165
8.1  转换指针  166
8.1.1  访问特殊用途的地址  167
8.1.2  访问端口  168
8.1.3  用DMA 访问内存  169
8.1.4  判断机器的字节序  169
8.2  别名、强别名和restrict 关键字  170
8.2.1  用联合体以多种方式表示值  171
8.2.2  强别名  172
8.2.3  使用restrict 关键字  173
8.3  线程和指针  174
8.3.1  线程间共享指针  175
8.3.2  用函数指针支持回调  177
8.4  面向对象技术  179
8.4.1  创建和使用不透明指针  179
8.4.2  C 中的多态  182
8.5  小结  187
关于作者和封面  188

作者简介

深入理解C指针和内存管理,提升编程效率!这是一本实战型图书,通过它,读者可以掌握指针动态操控内存的机制、对数据结构的增强支持,以及访问硬件等技术。本书详细阐述了如何在数组、字符串、结构体和函数中使用指针,同时演示了相应的内存模型及其对指针使用的影响。
指针为C语言带来了强大的功能和灵活性,却也是C语言中最难啃的一块“骨头”。本书旨在帮读者透彻理解指针,解决这个老大难问题。不论是初学者还是经验丰富的C/C++程序员和开发人员,都能从本书受益。
本书主要内容包括:
- 指针的基本概念及各种指针类型的声明;
- 学习动态内存分配、释放以及其他内存管理技术;
- 向函数传递数据和从函数返回数据;
- 理解数组和指针的关系;
- 如何通过指针使用字符串;
- 检查缓冲区溢出等指针安全问题;
- 理解不透明指针、有界指针、restrict关键字。


 深入理解C指针下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计1条)

  •     指针可以说是C语言的皇冠一样,让C语言大放光彩的也是它,让C语言充满问题的也是它。不知道多少人在学习C语言时,被这座大山挡住了。本人一直以来对指针都处于半懂的状态,架不住C指针的内容太过复杂。后来因为项目的原因,决心一定要抽个时间好好把它弄清楚。至于市面存在的高质量关于C指针的书,我觉得除了这本,还有就是大家都熟悉的《C与指针》。那本书我简单的翻过,第一印象觉得那本书的质量水平更高一些。但之所以没有详细的看那本书,主要是那本书除了讲解指针,还讲解了很多深入的东西。作为对指针还不是很熟悉的人,贸然上手总会费一些时间。而且页数较多,不便于快速梳理。以后有时间,再要好好看一看吧。再说本书。本书第一感觉就是小而精。首先是基本概念,然后是内存管理,有了这两个基础以后,就将指针与函数,数组,字符串和结构体结合的应用按章进行了讲解。最后又介绍了一些高级内容。思路非常清晰,认真读过之后明显感觉指针的概念清晰了起来。而且书中的样例代码对概念的理解非常有帮助。同时又配备了大量的图片和内存的分配图。很多混乱的东西都清晰了起来。但是本书还是有些缺点的。首先就是翻译。我是英文和中文对照着看的。前几章的翻译还是不错的。但是到了后几章,尤其是最后高级应用那里,明显翻译水平差了好大一截。很多概念根本无法理解,读了英文之后才明白。还有就是本书没有提供完整的样例代码,都是书中的一些代码片段。怎么说呢,这样有好处也有坏处。好处就是被迫使读者自己想办法写出完整的代码。这对人是一个很好的锻炼。基本一个完整的代码能让人理解好多东西。但是坏处也是明显的,尤其是在理解困难的概念上,你会发现只有代码片段很难构建其整个概念框架。理解起来超费劲。而且我非常肯定本书有些代码是没有经过编译器验证的,尤其是最后的几章,里面的有几处代码根本就不能执行。不过当你能发现这些问题时,也意味着你已经理解作者想表达的了。好吧,这也许也不能算是坏事。不管怎样,如果想了解指针,本书是一本值得读的书,而且一定要亲手敲一敲里面的代码,将其完整实现写出来,然后多GDB,多多观察内存泄露情况,你会发现这本薄书会带来很多收获。我将自己的笔记放到Gitbook上了,有兴趣的读者可以去看看。https://laoshuterry.gitbooks.io/noteofcpointer/content/本人按照自己的理解实现了书中的样例代码,同样欢迎有兴趣的读者可以去看看https://github.com/laoshuterry/pinterofc

精彩短评 (总计26条)

  •     这本书是相当好的。
  •     一本还不错的书,讲的比较全面,泛泛而谈的东西少,各种部分都有涉及。
  •     翻译不怎么好。内容比较基础,不过看完后还是有收获的。
  •     很赞的一本书~翻译得也非常好
  •     强烈推荐,有条件直接读英文原版。
  •     对C语言指针的使用做了非常好的总结。虽然不是很详尽,但值得一看。
  •     很不错的书。
  •     非常好,其实更好的是接合深入理解计算机系统一起来看。基本上把C指针的每一个细节都抠到了。每一个例子都值得仔细把玩,写得也非常通俗易懂,不故作高深。每一个例子基本都会配合内存中的栈帧和堆的分配来解释。读起来一气呵成,浑然一体。
  •     挺泛泛的,一晚上翻完。。。
  •     只能相见恨晚。没有征服C指针好。入门级的好书,目录结构很清晰,很多问题说的比较清楚。
  •     亮叔好棒哦,翻译得很好!
  •     嗯…讲的算比较基础 之前第一次接触的时候很抗拒因为老师说很难 其实用起来就会懂了 终于知道什么是指针函数和函数指针了…用这个做映射确实会方便很多啊
  •     虽然讲述的内容都是一个有经验的c程序员应该掌握的。但是这本书系统地总结了下,还是很有价值的。另外一些在网上搜不到很明白的说明的问题,如指针的0和别的0的区别,在书中有很好的说明。
  •     对于初学者很有用
  •     每次看《C pro lan》,到指针,头都大了。
  •     这本书只能是稍微介绍了指针,书名中的深字误导读者。
  •     翻译一般,而且没有什么特别,不过会讲strict让我很惊讶
  •     在看第一章,讲得好啊,清晰,翻译还过得去吧,我就想深入了解指针,看来有望了,不过估计还得砸基本书才行,哈哈哈,另外还是要多敲代码才行
  •     没有太多营养,其实指针的知识本来就不复杂,用一本书去阐述略显多余。
  •     翻译的很生硬,难理解
  •     有些地方译的狗屁不通。但是还是要练习代码啊。。
  •     如果对Kenneth A.Reek那本感觉吃力不妨试试这个w
  •     建议对内存模型不太理解的读一下,但个人以为真正的理解指针地址这些概念,还需要去看ISA、微系统结构、编译原理、链接、装载这些东西,当真正的把计算机的组成原理理通了,能够自己设计一个简单指令集的CPU了,C中的核心概念也就理解的比较透彻了。
  •     书名说是深入理解,实际比较基础,没有我想看到的奇技淫巧。
  •     讲的蛮细的,不错
  •     可以让你深入理解指针
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024