深入理解C指针 (图灵程序设计丛书 82)

深入理解C指针 (图灵程序设计丛书 82)
作者:
Richard Reese
译者:
陈晓亮
语言:
中文
类型:
EPUB
页数:
204页
大小:
3.26 MB
出版社:
人民邮电出版社
出版时间:
2014-02-01
ISBN:
9787115344489
分类:

内容简介

深入理解C指针和内存管理,提升编程效率!这是一本实战型图书,通过它,读者可以掌握指针动态操控内存的机制、对数据结构的增强支持,以及访问硬件等技术。
本书详细阐述了如何在数组、字符串、结构体和函数中使用指针,同时演示了相应的内存模型及其对指针使用的影响。

指针为C语言带来了强大的功能和灵活性,却也是C语言中最难啃的一块“骨头”。
本书旨在帮读者透彻理解指针,解决这个老大难问题。
不论是初学者还是经验丰富的C/C++程序员和开发人员,都能从本书受益。

本书主要内容包括:

– 指针的基本概念及各种指针类型的声明;

– 学习动态内存分配、释放以及其他内存管理技术;

– 向函数传递数据和从函数返回数据;

– 理解数组和指针的关系;

– 如何通过指针使用字符串;

– 检查缓冲区溢出等指针安全问题;

– 理解不透明指针、有界指针、restrict关键字。

作者简介

作者简介 :

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

下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
免责申明
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。

📖 支持知识自由流动

每一本书的稳定访问,都离不开服务器、存储与带宽的长期维护。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索