征服C指標

2021-08-27 09:40:06 字數 4346 閱讀 6183

更多關於 》《征服c指標》

內容簡介

計算機書籍

《征服c指標》被稱為日本最有營養的c 參考書。作者是日本著名的「毒舌程式設計師」,其言辭犀利,觀點鮮明,往往能讓讀者迅速領悟要領。

《征服c指標》中結合了作者多年的程式設計經驗和感悟,從c 語言指標的概念講起,通過實驗一步一步地為我們解釋了指標和陣列、記憶體、資料結構的關係,展現了指標的常見用法,揭示了各種使用技巧。另外,還通過獨特的方式教會我們怎樣解讀c 語言那些讓人「糾結」的宣告語法,如何繞過c 指標的陷阱。

《征服c指標》適合c 語言中級學習者閱讀,也可作為計算機專業學生學習c 語言的參考。

目錄《征服c指標》

第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網

試讀《征服C指標》

說起學習c語言,我想大家都閱讀過清華大學出版社出版的譚浩強版的 c程式設計 這本書是我的c語言啟蒙。我的程式設計道路也是從學習c語言開始的。剛接觸c語言時感覺理解起來非常費力。怎麼也想不通i 和 i等一系列的不是問題的問題,因為每次問老師時,老師也說不清楚,最後得到的答案卻是,就是這樣規定的你就這樣...

征服C指標一

1.1 c是只能使用標量的語言 標量是指char int double和列舉型等資料型別,以及指標。相對地,陣列 結構體和共用體這樣的多個標量組合的型別,我們稱之為聚合型別 include int main void 如今c ansi c 已經能夠讓我們整合的使用聚合型別了 結構體的一次賦值 將結構...

《征服C指標》試讀感想

其實起初看到這本書不是在這裡,而是在以為同學那裡,當時由於時間限制,而且看了看內容,是一種 b 近乎於吐槽的語言方 b 式,覺得可能有點兒虛,拿起來翻了翻就扔給他了。但是這個名字 征服c指標 起的,實在是讓我有看一看的衝動,所以就上網搜了一下 企圖能夠有個電子版啥的 oops 結果卻發現了一些這本書...