深入理解C指针

深入理解C指针

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

指针是C语言的一项核心特性,对于指针的掌握程度是区分C语言新手与老手的重要标志。

内容简介

《深入理解C指针》专门研究指针,旨在提供比其他图书更全面和深入的C 指针和内存管理知识。全书巨细靡遗地为读者展现了C语言编程中最重要的话题:C的动态内存管理、指针和函数、指针和数组、指针和字符串、指针和结构体。作者还专门用一章篇幅讲解了安全问题和指针误用,让读者对指针的认识又深入一层。全书每章都穿插了使用指针的注意事项和潜在陷阱,及时贴心地提示读者在编程中避开此类问题。

作者简介

作者Richard Reese,华盛顿州塔尔顿州立大学副教授。Reese自2002年起就在塔尔顿州立大学教授计算机科学课程,此前在洛克希德•马丁公司做过十年的软件开发。Reese著有多本技术图书,包括Oracle Certified Associate,Java SE 7 Programmer Study Guide,Java 7 New Features Cookbook,EJB 3.1 CookBook等。

章节目录

版权信息

版权声明

O'Reilly Media, Inc.介绍

业界评论

前言

本书的不同之处

学习方法

目标读者

本书结构

小结

排版约定

使用代码

Safari® Books Online

联系我们

第1章 认识指针

1.1 指针和内存

1.1.1 为什么要精通指针

1.1.2 声明指针

1.1.3 如何阅读声明

1.1.4 地址操作符

1.1.5 打印指针的值

虚拟内存和指针

1.1.6 用间接引用操作符解引指针

1.1.7 指向函数的指针

1.1.8 null的概念

1. 用不用NULL

2. void指针

3. 全局和静态指针

1.2 指针的长度和类型

1.2.1 内存模型

1.2.2 指针相关的预定义类型

1. 理解size_t

2. 对指针使用sizeof操作符

3. 使用intptr_t和uintptr_t

1.3 指针操作符

1.3.1 指针算术运算

1. 给指针加上整数

2. void指针和加法

3. 从指针减去整数

4. 指针相减

1.3.2 比较指针

1.4 指针的常见用法

1.4.1 多层间接引用

1.4.2 常量与指针

1. 指向常量的指针

2. 指向非常量的常量指针

3. 指向常量的常量指针

4. 指向“指向常量的常量指针”的指针

1.5 小结

第2章 C的动态内存管理

2.1 动态内存分配

内存泄漏

1. 丢失地址

2. 隐式内存泄漏

2.2 动态内存分配函数

2.2.1 使用malloc函数

1. 要不要强制类型转换

2. 分配内存失败

3. 没有给malloc传递正确的参数

4. 确认所分配的内存数

5. 静态、全局指针和malloc

2.2.2 使用calloc函数

2.2.3 使用realloc函数

2.2.4 alloca函数和变长数组

2.3 用free函数释放内存

2.3.1 将已释放的指针赋值为NULL

2.3.2 重复释放

2.3.3 堆和系统内存

2.3.4 程序结束前释放内存

2.4 迷途指针

2.4.1 迷途指针示例

2.4.2 处理迷途指针

2.4.3 调试器对检测内存泄漏的支持

2.5 动态内存分配技术

2.5.1 C的垃圾回收

2.5.2 资源获取即初始化

2.5.3 使用异常处理函数

2.6 小结

第3章 指针和函数

3.1 程序的栈和堆

3.1.1 程序栈

3.1.2 栈帧的组织

3.2 通过指针传递和返回数据

3.2.1 用指针传递数据

3.2.2 用值传递数据

3.2.3 传递指向常量的指针

3.2.4 返回指针

3.2.5 局部数据指针

3.2.6 传递空指针

3.2.7 传递指针的指针

实现自己的free函数

3.3 函数指针

3.3.1 声明函数指针

3.3.2 使用函数指针

3.3.3 传递函数指针

3.3.4 返回函数指针

3.3.5 使用函数指针数组

3.3.6 比较函数指针

3.3.7 转换函数指针

3.4 小结

第4章 指针和数组

4.1 数组概述

4.1.1 一维数组

4.1.2 二维数组

4.1.3 多维数组

4.2 指针表示法和数组

数组和指针的差别

4.3 用malloc创建一维数组

4.4 用realloc调整数组长度

4.5 传递一维数组

4.5.1 用数组表示法

4.5.2 用指针表示法

4.6 使用指针的一维数组

4.7 指针和多维数组

4.8 传递多维数组

4.9 动态分配二维数组

4.9.1 分配可能不连续的内存

4.9.2 分配连续内存

4.10 不规则数组和指针

4.11 小结

第5章 指针和字符串

5.1 字符串基础

5.1.1 字符串声明

5.1.2 字符串字面量池

字符串字面量不是常量的情况

5.1.3 字符串初始化

1. 初始化char数组

2. 初始化char指针

3. 从标准输入初始化字符串

4. 字符串位置小结

5.2 标准字符串操作

5.2.1 比较字符串

5.2.2 复制字符串

5.2.3 拼接字符串

5.3 传递字符串

5.3.1 传递简单字符串

5.3.2 传递字符常量的指针

5.3.3 传递需要初始化的字符串

5.3.4 给应用程序传递参数

5.4 返回字符串

5.4.1 返回字面量的地址

5.4.2 返回动态分配内存的地址

返回局部字符串的地址

5.5 函数指针和字符串

5.6 小结

第6章 指针和结构体

6.1 介绍

为结构体分配内存

6.2 结构体释放问题

6.3 避免malloc/free开销

6.4 用指针支持数据结构

6.4.1 单链表

6.4.2 用指针支持队列

6.4.3 用指针支持栈

6.4.4 用指针支持树

6.5 小结

第7章 安全问题和指针误用

7.1 指针的声明和初始化

7.1.1 不恰当的指针声明

7.1.2 使用指针前未初始化

7.1.3 处理未初始化指针

7.2 指针的使用问题

7.2.1 测试NULL

7.2.2 错误使用解引操作

7.2.3 迷途指针

7.2.4 越过数组边界访问内存

7.2.5 错误计算数组长度

7.2.6 错误使用sizeof操作符

7.2.7 一定要匹配指针类型

7.2.8 有界指针

7.2.9 字符串的安全问题

7.2.10 指针算术运算和结构体

7.2.11 函数指针的问题

7.3 内存释放问题

7.3.1 重复释放

7.3.2 清除敏感数据

7.4 使用静态分析工具

7.5 小结

第8章 其他重要内容

8.1 转换指针

8.1.1 访问特殊用途的地址

8.1.2 访问端口

8.1.3 用DMA访问内存

8.1.4 判断机器的字节序

8.2 别名、强别名和restrict关键字

8.2.1 用联合体以多种方式表示值

8.2.2 强别名

8.2.3 使用restrict关键字

8.3 线程和指针

8.3.1 线程间共享指针

8.3.2 用函数指针支持回调

8.4 面向对象技术

8.4.1 创建和使用不透明指针

8.4.2 C中的多态

8.5 小结

关于作者和封面上的鸟

关于作者

关于封面

深入理解C指针是2014年由人民邮电出版社·图灵出品出版,作者[美]RichardReese。

得书感谢您对《深入理解C指针》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
C++ 黑客编程揭秘与防范(第3版) 电子书
反病毒工程师入门精选,包含反病毒领域的所有知识,是亿万读者的引路名师。
2015版环境管理体系标准理解与应用 电子书
为便于广大组织,包括生产型和服务型组织的相关人员,以及内、外部审核员更好地理解和应用国际先进的环境管理体系标准,作者依据GB/T24001—2016idtISO14001:2015《环境管理体系要求及使用指南》,编写了本书。  本书主要内容包括:概论、术语和定义部分,环境管理体系要求的理解和应用,环境管理体系审核,以及附录环境管理体系审核思路和练习题参考答案。在本书的编写过程中,作者从满足组织和内
从边境理解国家:哈尼/阿卡人橡胶种植的人类学研究 电子书
本书梳理了该地区的橡胶种植历程,描绘了橡胶种植者的流动与聚集,分析了橡胶种植引起的土地使用方式的转变、社会结构和传统文化的变化以及他们的社会适应与文化调适策略。通过哈尼\阿卡人的橡胶种植活动及日常生活来解读他们对民族国家的认知、理解、想象以及融入国家的实践,探讨国家对少数民族发展的作用和影响,讨论民族群体如何想象民族共同体和国家共同体,理解边境与国家的关系和民族与国家的关系,进而理解国家本质。
瑞士:多元文化建筑 电子书
一本瑞士建筑旅行指南,更是一本瑞士当代建筑案例合集。
思考的乐趣 电子书
科普作家顾森力作,用简单诙谐的语言烹饪数学佳肴。