展开全部

主编推荐语

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

内容简介

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

目录

  • 版权信息
  • 版权声明
  • 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 小结
  • 关于作者和封面上的鸟
  • 关于作者
  • 关于封面
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社·图灵出品

图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。