指針是C語言的一項核心特性,對於指針的掌握程度是區分C語言新手與老手的重要標誌。《深入理解C指針》專門研究指針,旨在提供比其他圖書更全面和深入的C 指針和記憶體管理知識。全書巨細靡遺地為讀者展現了C語言編程中最重要的話題:C的動態記憶體管理、指針和函式、指針和數組、指針和字元串、指針和結構體。作者還專門用一章篇幅講解了安全問題和指針誤用,讓讀者對指針的認識又深入一層。全書每章都穿插了使用指針的注意事項和潛在陷阱,及時貼心地提示讀者在編程中避開此類問題。 《深入理解C指針》適合C和C++程式設計師和開發人員閱讀,也可作為計算機專業學生學習C語言的參考圖書。
基本介紹
- 外文名:Understanding and Using C Pointers
- 書名:深入理解C指針
- 作者:里斯 (Richard Reese)
- 出版社:人民郵電出版社
- 頁數:188頁
- 開本:16
- 譯者:陳曉亮
- 出版日期:2014年2月1日
- 語種:簡體中文
- ISBN:9787115344489
基本介紹,內容簡介,作者簡介,圖書目錄,
基本介紹
內容簡介
C程式設計師進階必備經典
透徹理解指針與記憶體管理
內容新穎,兼容C11標準
透徹理解指針與記憶體管理
內容新穎,兼容C11標準
作者簡介
Richard Reese 華盛頓州塔爾頓州立大學副教授。Reese自2002年起就在塔爾頓州立大學教授計算機科學課程,此前在洛克希德·馬丁公司做過十年的軟體開發。Reese著有多本技術圖書,包括Oracle Certified Associate,Java SE 7 Programmer Study Guide,Java 7 New Features Cookbook,EJB 3.1 CookBook等。
圖書目錄
前言
第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.2 指針的長度和類型
1.2.1 記憶體模型
1.2.2 指針相關的預定義類型
1.3 指針操作符
1.3.1 指針算術運算
1.3.2 比較指針
1.4 指針的常見用法
1.4.1 多層間接引用
1.4.2 常量與指針
1.5 小結
第2章 C的動態記憶體管理
2.1 動態記憶體分配
2.2 動態記憶體分配函式
2.2.1 使用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 傳遞指針的指針
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.1 不規則數組和指針
4.11 小結
第5章 指針和字元串
5.1 字元串基礎
5.1.1 字元串聲明
5.1.2 字元串字面量池
5.1.3 字元串初始化
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 小結
關於作者和封面
第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.2 指針的長度和類型
1.2.1 記憶體模型
1.2.2 指針相關的預定義類型
1.3 指針操作符
1.3.1 指針算術運算
1.3.2 比較指針
1.4 指針的常見用法
1.4.1 多層間接引用
1.4.2 常量與指針
1.5 小結
第2章 C的動態記憶體管理
2.1 動態記憶體分配
2.2 動態記憶體分配函式
2.2.1 使用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 傳遞指針的指針
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.1 不規則數組和指針
4.11 小結
第5章 指針和字元串
5.1 字元串基礎
5.1.1 字元串聲明
5.1.2 字元串字面量池
5.1.3 字元串初始化
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 小結
關於作者和封面