征服C指針

征服C指針

《圖靈程式設計叢書:征服C指針》被稱為日本最有營養的C參考書。作者是日本著名的“毒舌程式設計師”,其言辭犀利,觀點鮮明,往往能讓讀者迅速領悟要領。書中結合了作者多年的編程經驗和感悟,從C語言指針的概念講起,通過實驗一步一步地為我們解釋了指針和數組、記憶體、數據結構的關係,展現了指針的常見用法,揭示了各種使用技巧。另外,還通過獨特的方式教會我們怎樣解讀C語言那些讓人“糾結”的聲明語法,如何繞過C指針的陷阱。

圖書信息

版 次:1

頁 數:254

字 數:333000

印刷時間:2013-2-1

開 本:16開

紙 張:膠版紙

印 次:1

包 裝:平裝

叢書名:圖靈程式設計叢書

國際標準書號ISBN:9787115301215

內容簡介

《圖靈程式設計叢書:征服C指針》被稱為日本最有營養的C參考書。作者是日本著名的“毒舌程式設計師”,其言辭犀利,觀點鮮明,往往能讓讀者迅速領悟要領。書中結合了作者多年的編程經驗和感悟,從C語言指針的概念講起,通過實驗一步一步地為我們解釋了指針和數組、記憶體、數據結構的關係,展現了指針的常見用法,揭示了各種使用技巧。另外,還通過獨特的方式教會我們怎樣解讀C語言那些讓人“糾結”的聲明語法,如何繞過C指針的陷阱。

作者簡介

前橋和彌(Maebasi Kazuya)

1969年出生,著有《徹底掌握C語言》、《Java之謎和陷阱》、《自己設計程式語言》等。其一針見血的“毒舌”文風和對程式語言深刻的見地受到廣大讀者的歡迎。

目錄

第0章 本書的目標與結構——引言 1

0.1 本書的目標 1

0.2 目標讀者和內容結構 3

第1章 從基礎開始——預備知識和複習 7

1.1 C是什麼樣的語言 7

1.1.1 比喻 7

1.1.2 C的發展歷程 8

1.1.3 不完備和不統一的語法 9

1.1.4 ANSI C 10

1.1.5 C的寶典——K&R 11

1.1.6 C的理念 12

1.1.7 C的主體 14

1.1.8 C是只能使用標量的語言 15

1.2 關於指針 16

1.2.1 惡名昭著的指針究竟是什麼 16

1.2.2 和指針的第一次親密接觸 17

1.2.3 指針和地址之間的微妙關係 23

1.2.4 指針運算 26

1.2.5 什麼是空指針 27

1.2.6 實踐——swap函式 31

1.3 關於數組 34

1.3.1 運用數組 34

1.3.2 數組和指針的微妙關係 37

1.3.3 下標運算符[]和數組是沒有關係的 39

1.3.4 為什麼存在奇怪的指針運算 42

1.3.5 不要濫用指針運算 43

1.3.6 試圖將數組作為函式的參數進行傳遞 45

1.3.7 聲明函式形參的方法 48

第2章 做個實驗見分曉——C是怎么使用記憶體的 51

2.1 虛擬地址 51

2.2 C的記憶體的使用方法 56

2.2.1 C的變數的種類 56

2.2.2 輸出地址 58

2.3 函式和字元串常量 61

2.3.1 唯讀記憶體區域 61

2.3.2 指向函式的指針 62

2.4 靜態變數 64

2.4.1 什麼是靜態變數 64

2.4.2 分割編譯和連線 64

2.5 自動變數(棧) 66

2.5.1 記憶體區域的“重複使用” 66

2.5.2 函式調用究竟發生了什麼 66

2.5.3 可變長參數 73

2.5.4 遞歸調用 80

2.6 利用malloc()來進行動態記憶體分配(堆) 84

2.6.1 malloc()的基礎 84

2.6.2 malloc()是“系統調用”嗎 88

2.6.3 malloc()中發生了什麼 89

2.6.4 free()之後,對應的記憶體區域會怎樣 91

2.6.5 碎片化 93

2.6.6 malloc()以外的動態記憶體分配函式 94

2.7 記憶體布局對齊 98

2.8 位元組排序 101

2.9 關於開發語言的標準和實現——對不起,前面的內容都是忽悠的 102

第3章 揭秘C的語法——它到底是怎么回事 105

3.1 解讀C的聲明 105

3.1.1 用英語來閱讀 105

3.1.2 解讀C的聲明 106

3.1.3 類型名 109

3.2 C的數據類型的模型 111

3.2.1 基本類型和派生類型 111

3.2.2 指針類型派生 112

3.2.3 數組類型派生 113

3.2.4 什麼是指向數組的指針 114

3.2.5 C語言中不存在多維數組! 116

3.2.6 函式類型派生 117

3.2.7 計算類型的大小 119

3.2.8 基本類型 121

3.2.9 結構體和共用體 122

3.2.10 不完全類型 123

3.3 表達式 125

3.3.1 表達式和數據類型 125

3.3.2 “左值”是什麼——變數的兩張面孔 129

3.3.3 將數組解讀成指針 130

3.3.4 數組和指針相關的運算符 132

3.3.5 多維數組 133

3.4 解讀C的聲明(續) 137

3.4.1 const修飾符 137

3.4.2 如何使用const?可以使用到什麼程度? 139

3.4.3 typedef 141

3.5 其他 143

3.5.1 函式的形參的聲明 143

3.5.2 關於空的下標運算符[] 146

3.5.3 字元串常量 148

3.5.4 關於指向函式的指針引起的混亂 151

3.5.5 強制類型轉換 152

3.5.6 練習——挑戰那些複雜的聲明 153

3.6 應該記住:數組和指針是不同的事物 157

3.6.1 為什麼會引起混亂 157

3.6.2 表達式之中 158

3.6.3 聲明 160

第4章 數組和指針的常用方法 161

4.1 基本的使用方法 161

4.1.1 以函式返回值之外的方式來返回值 161

4.1.2 將數組作為函式的參數傳遞 162

4.1.3 可變長數組 163

4.2 組合使用 166

4.2.1 可變長數組的數組 166

4.2.2 可變長數組的可變長數組 172

4.2.3 命令行參數 174

4.2.4 通過參數返回指針 177

4.2.5 將多維數組作為函式的參數傳遞 181

4.2.6 數組的可變長數組 182

4.2.7 糾結於“可變”之前,不妨考慮使用結構體 183

4.3 違反標準的技巧 187

4.3.1 可變長結構體 187

4.3.2 從1開始的數組 189

第5章 數據結構 ——真正的指針的使用方法 193

5.1 案例學習1:計算單詞的出現頻率 193

5.1.1 案例的需求 193

5.1.2 設計 195

5.1.3 數組版 200

5.1.4 鍊表版 203

5.1.5 追加檢索功能 211

5.1.6 其他的數據結構 214

5.2 案例學習2:繪圖工具的數據結構 218

5.2.1 案例的需求 218

5.2.2 實現各種圖形的數據模型 219

5.2.3 Shape型 221

5.2.4 討論——還有別的方法嗎 223

5.2.5 圖形的組合 228

5.2.6 繼承和多態之道 233

5.2.7 對指針的恐懼 236

5.2.8 說到底,指針究竟是什麼 237

第6章 其他——拾遺 239

6.1 陷阱 239

6.1.1 關於strncpy() 239

6.1.2 如果在早期的C中使用float類型的參數 240

6.1.3 printf()和scanf() 242

6.1.4 原型聲明的光和影 243

6.2 慣用句法 245

6.2.1 結構體聲明 245

6.2.2 自引用型結構體 246

6.2.3 結構體的相互引用 247

6.2.4 結構體的嵌套 248

6.2.5 共用體 249

6.2.6 數組的初始化 250

6.2.7 char數組的初始化 250

6.2.8 指向char的指針的數組的初始化 251

6.2.9 結構體的初始化 252

6.2.10 共用體的初始化 252

6.2.11 全局變數的聲明 253

相關詞條

熱門詞條

聯絡我們