C專家編程 (Expert C Programming: Deep C Secrets )

[美] 彼得·範德林登(Peter Van Der Linden)

  • C專家編程 (Expert C Programming: Deep C Secrets )-preview-1
  • C專家編程 (Expert C Programming: Deep C Secrets )-preview-2
C專家編程 (Expert C Programming: Deep C Secrets )-preview-1

買這商品的人也買了...

商品描述

《C專家編程》展示了優秀的C程序員所使用的編碼技巧,並專門開闢了一章對C++的基礎知識進行了介紹。

《C專家編程》對C的歷史、語言特性、聲明、數組、指針、鏈接、運行時、內存以及如何進一步學習C++等問題進行了細致的講解和深入的分析。本書擷取幾十個實例進行講解,對C程序員具有非常高的實用價值。

《C專家編程》可以幫助有一定經驗的C程序員成為C編程方面的專家;對於C語言功底深厚的程序員,本書可以幫助他們站在C的高度瞭解和學習C++。

作者簡介

Peter van der Linden,Sun公司编译器和OS核心开发团队成员,世界知名的专家级C程序员,拥有多年的C开发实战经验,对C/C++语言有深入理解。

目錄大綱

第 1章 C:穿越時空的迷霧 1

1.1 C語言的史前階段 1

1.2 C語言的早期體驗 4

1.3 標準I/O庫和C預處理器 5

1.4 K&R C 8

1.5 今日之ANSI C 10

1.6 它很棒,但它符合標準嗎 12

1.7 編譯限制 14

1.8 ANSI C標準的結構 15

1.9 閱讀ANSI C標準,尋找樂趣和裨益 18

1.10 “安靜的改變”究竟有多少安靜 22

1.11 輕松一下——由編譯器定義的Pragmas效果 25

第 2章 這不是Bug,而是語言特性 27

2.1 這關語言特性何事,在Fortran里這就是Bug呀 27

2.2 多做之過 29

2.3 誤做之過 36

2.4 少做之過 43

2.5 輕松一下——有些特性確實就是Bug 51

第3章 分析C語言的聲明 53

3.1 只有編譯器才會喜歡的語法 54

3.2 聲明是如何形成的 56

3.3 優先級規則 61

3.4 通過圖表分析C語言的聲明 63

3.5 typedef可以成為你的朋友 65

3.6 typedef int x[10]和#define x int[10]的區別 66

3.7 typedef struct foo{ ... foo; }的含義 67

3.8 理解所有分析過程的代碼段 69

3.9 輕松一下——驅動物理實體的軟件 71

第4章 令人震驚的事實:數組和指針並不相同 79

4.1 數組並非指針 79

4.2 我的代碼為什麽無法運行 79

4.3 什麽是聲明,什麽是定義 80

4.4 使聲明與定義相匹配 84

4.5 數組和指針的其他區別 84

4.6 輕松一下——迴文的樂趣 85

第5章 對鏈接的思考 89

5.1 函數庫、鏈接和載入 89

5.2 動態鏈接的優點 92

5.3 函數庫鏈接的5個特殊秘密 95

5.4 警惕Interpositioning 99

5.5 產生鏈接器報告文件 104

5.6 輕松一下——看看誰在說話:挑戰Turing測驗 105

第6章 運動的詩章:運行時數據結構 111

6.1 a.out及其傳說 112

6.2 段 113

6.3 操作系統在a.out文件里乾了些什麽 115

6.4 C語言運行時系統在a.out里乾了些什麽 117

6.5 當函數被調用時發生了什麽:過程活動記錄 119

6.6 auto和static關鍵字 123

6.7 控制線程 124

6.8 setjmp和longjmp 124

6.9 UNIX中的堆棧段 126

6.10 MS-DOS中的堆棧段 126

6.11 有用的C語言工具 127

6.12 輕松一下——卡耐基·梅隆大學的編程難題 130

6.13 只適用於高級學員閱讀的材料 132

第7章 對內存的思考 133

7.1 Intel 80x86系列 133

7.2 Intel 80x86內存模型以及它的工作原理 137

7.3 虛擬內存 141

7.4 cache存儲器 144

7.5 數據段和堆 148

7.6 內存泄漏 149

7.7 總線錯誤 153

7.8 輕松一下——“Thing King”和“頁面游戲” 159

第8章 為什麽程序員無法分清萬聖節和聖誕節 163

8.1 Portzebie度量衡系統 163

8.2 根據位模式構築圖形 164

8.3 在等待時類型發生了變化 166

8.4 原型之痛 168

8.5 原型在什麽地方會失敗 170

8.6 不需要按回車鍵就能得到一個字符 173

8.7 用C語言實現有限狀態機 177

8.8 軟件比硬件更困難 178

8.9 如何進行強制類型轉換,為何要進行類型強制轉換 181

8.10 輕松一下——國際C語言混亂代碼大賽 183

第9章 再論數組 193

9.1 什麽時候數組與指針相同 193

9.2 為什麽會發生混淆 194

9.3 為什麽C語言把數組形參當作指針 199

9.4 數組片段的下標 202

9.5 數組和指針可交換性的總結 203

9.6 C語言的多維數組 203

9.7 輕松一下——軟件/硬件平衡 209

第 10章 再論指針 213

10.1 多維數組的內存佈局 213

10.2 指針數組就是Iliffe向量 214

10.3 在鋸齒狀數組上使用指針 217

10.4 向函數傳遞一個一維數組 220

10.5 使用指針向函數傳遞一個多維數組 221

10.6 使用指針從函數返回一個數組 224

10.7 使用指針創建和使用動態數組 226

10.8 輕松一下——程序檢驗的限制 231

第 11章 你懂得C,所以C++不在話下 235

11.1 初識OOP 235

11.2 抽象——取事物的本質特性 237

11.3 封裝——把相關的類型、數據和函數組合在一起 238

11.4 展示一些類——用戶定義類型享有和預定義類型一樣的權限 239

11.5 訪問控制 240

11.6 聲明 241

11.7 如何調用成員函數 243

11.8 繼承——復用已經定義的操作 245

11.9 多重繼承——從兩個或更多的基類派生 249

11.10 重載——作用於不同類型的同一操作具有相同的名字 250

11.11 C++如何進行操作符重載 250

11.12 C++的輸入/輸出(I/O) 251

11.13 多態——運行時綁定 252

11.14 解釋 253

11.15 C++如何表現多態 254

11.16 新奇玩意兒——多態 255

11.17 C++的其他要點 256

11.18 如果我的目標是那裡,我不會從這里起步 257

11.19 它或許過於復雜,但卻是唯一可行的方案 259

11.20 輕松一下——死亡電腦協會 263

11.21 更多閱讀材料 264

附錄A 程序員工作面試的秘密 265