內容介紹
C語言兼具高級語言和彙編語言的特點,學習起來難度較大,令不少初學者望而生畏。同時,C語言又是一門套用非常廣泛的程式語言,在實際套用中如何根據不同的套用場景高效地使用C語言,也是大家非常感興趣的話題。《C語言點滴》精心選取C語言一些必備知識,這也是初學者容易搞不清楚、犯錯誤的知識點,進行深入地分析和介紹,以期幫助讀者清除C語言學習之路上的“絆腳石”,降低初學入門的難度,培養繼續深入的興趣。全書共14章。第1章覆蓋了C語言學習和程式設計師職業生涯的入門話題,輕鬆詼諧,堪稱“餐前開胃小菜”。第2章介紹了編寫程式所需的基礎知識。第3章到第13章,分別針對C語言的要點和難點進行深入細緻的剖析和探討,涉及數據類型、表達式和運算符、輸入輸出、控制結構、函式、庫函式、數組、指針、結構體、檔案、錯誤與調試等內容。第14章探討了程式效率和編程習慣等話題,並且為讀者繼續學習C語言指明了方向。《C語言點滴》作者有教授C語言課程的背景,其深入淺出、輕鬆幽默、娓娓道來的講課風格,在《C語言點滴》中也得到充分體現。讀者在閱讀時往往會會心一笑,在不知不覺中收穫知識和感悟。通過閱讀《C語言點滴》,讀者可以掌握C語言編程的核心知識點和必備技能,也可以鞏固基礎、拓展視野,為程式設計師的職業生涯鋪路搭橋。《C語言點滴》適合作為C語言初學者和程式設計師的入門讀物和自學教程,也可作為高等院校計算機相關專業學生的參考讀物。作品目錄
目 錄第1章 程式猿 && 程式媛 1
1.1 裝備篇 1
1.1.1 衣著 1
1.1.2 鍵盤和滑鼠 2
1.1.3 電腦 4
1.2 程式猿和網際網路 6
1.2.1 搜尋引擎 6
1.2.2 通信 9
1.2.3 社交 12
1.2.4 論壇與部落格 14
1.2.5 奪寶奇兵 17
1.2.6 網際網路精神 19
1.3 熬夜指南 20
1.4 程式=數據結構+算法 22
1.4.1 數據結構 23
1.4.2 算法 24
1.5 內功修煉 28
1.5.1 數學 28
1.5.2 軟體工程 31
第2章 編程基礎知識 33
2.1 程式語言 33
2.1.1 C語言的昨天 34
2.1.2 C語言的今天 35
2.2 如何學好C語言 38
2.3 開發平台 40
2.4 開發工具 42
2.4.1 集成開發工具 42
2.4.2 文檔生成工具 45
2.4.3 版本控制工具 47
2.4.4 推薦開發流程 49
2.5 編程風格 50
2.5.1 變數名 51
2.5.2 縮進和大括弧匹配 52
2.5.3 函式的長度和分布 53
2.5.4 編程字型 54
2.5.5 風格和重構 55
第3章 數據類型 58
3.1 原碼、反碼和補碼的解釋 58
3.2 整型數的溢出 62
3.3 溢出深入分析 64
3.3.1 溢出的定義 64
3.3.2 溢出的邊界 65
3.3.3 溢出的危害 66
3.3.4 避免溢出的方法 66
3.4 無符號數 67
3.5 int和char的關係 70
3.5.1 char就是short short 70
3.5.2 char的符號 71
3.6 浮點數的有效位 72
3.7 判斷兩個浮點數相等 75
3.8 常量與常量後綴 76
3.9 sizeof運算符 77
3.9.1 sizeof返回值 77
3.9.2 sizeof的用處 77
3.9.3 sizeof(指針)和sizeof(數組)的區別 78
3.10 本章小結 79
第4章 表達式和運算符 81
4.1 自增(減)運算符 81
4.2 左值和右值 83
4.3 布爾值 84
4.4 數據類型轉換 85
4.5 寫表達式的注意事項 88
4.5.1 用括弧來確定運算優先權 88
4.5.2 避免運算順序問題 89
4.6 有趣的模運算% 90
4.6.1 模運算的基本知識和用法 90
4.6.2 模運算和哈希(Hash)結構 91
4.7 位運算 94
4.8 本章小結 96
第5章 輸入輸出 97
5.1 流 97
5.2 stdin、stdout、stderr 99
5.3 單個字元輸入輸出 100
5.3.1 字元輸入輸出函式 101
5.3.2 getch函式 103
5.4 字元串輸入輸出 104
5.5 格式化輸入輸出 105
5.5.1 scanf函式的基本知識 105
5.5.2 scanf函式的輸入特點 107
5.5.3 scanf函式處理字元、數字和字元串 109
5.5.4 scanf函式注意事項 111
5.5.5 scanf函式總結 114
5.5.6 格式化輸出printf函式 116
5.5.7 選擇合適的格式控制符 117
5.6 輸入規則全真七子 118
5.7 字元串的安全輸入方法 119
5.8 本章小結 121
第6章 控制結構 122
6.1 控制結構常見錯誤 122
6.2 語句塊 124
6.3 for循環 125
6.4 結構化編程及goto語句 127
6.5 假死現象 129
6.6 本章小結 130
第7章 函式、模組和宏定義 132
7.1 預處理指令 132
7.1.1 檔案包含 132
7.1.2 條件編譯 133
7.1.3 宏替換 134
7.2 main函式 135
7.3 命令行解析 138
7.4 static和const 139
7.5 編譯和連結 142
7.6 聲明和定義 144
7.7 頭檔案 145
7.8 頭檔案的重複包含 147
7.9 多檔案項目 150
7.10 C和C++語言混合項目 152
7.11 本章小結 154
第8章 庫函式 155
8.1 數學相關 156
8.2 字元串相關 156
8.3 字元和數字相互轉換 159
8.4 時間函式 160
8.5 隨機數探討 162
8.6 系統相關函式 165
8.7 庫函式使用建議 166
8.8 本章小結 167
第9章 數組 169
9.1 數組的基本知識 169
9.2 數組初始化和數組之間賦值 170
9.3 數組與函式 171
9.4 數組越界 172
9.5 debug和release的區別 173
9.6 二維數組 174
9.6.1 二維數組的定義和初始化 175
9.6.2 二維數組的訪問 176
9.7 本章小結 177
第10章 指針 178
10.1 指針的基本知識和定義 179
10.2 指針類型和指針指向的類型 181
10.3 指針定義中常見的錯誤 183
10.3.1 野指針 183
10.3.2 指針賦值原則 184
10.4 void和NULL 185
10.4.1 void 185
10.4.2 NULL 187
10.5 指針和數組的關係初探 188
10.6 指針與數組關係的再探 192
10.6.1 四個概念的聯繫 193
10.6.2 指針型指針和指針數組 195
10.6.3 數組指針和二維數組 198
10.7 C語言的記憶體映像 200
10.8 動態記憶體分配 202
10.8.1 典型用法 202
10.8.2 malloc函式和calloc函式 203
10.8.3 realloc函式 204
10.8.4 記憶體釋放free 206
10.8.5 記憶體操作函式 208
10.8.6 記憶體使用的效率建議 209
10.9 動態數組 210
10.9.1 動態一維數組 210
10.9.2 動態二維數組 211
10.10 字元串 212
10.11 函式和指針 215
10.11.1 用指針類型作為函式形參 215
10.11.2 函式返回指針類型 217
10.12 函式指針 219
10.12.1 函式指針基本知識 219
10.12.2 回調函式 220
10.12.3 函式指針作用的深度思考 222
10.13 複雜聲明 227
10.13.1 複雜聲明分析 227
10.13.2 返回函式指針的函式 230
10.13.3 複雜聲明定義 232
10.13.4 複雜聲明用於強制類型轉換 233
10.14 本章小結 234
第11章 結構體 236
11.1 自定義數據類型 236
11.2 定義一個結構體變數的三種方法 237
11.3 結構體中的“洞” 239
11.4 結構體的賦值和比較 240
11.5 結構體的讀寫 242
11.6 函式與結構體 243
11.7 枚舉 244
11.8 本章小結 245
第12章 檔案 247
12.1 檔案基礎知識 247
12.1.1 檔案指針的解釋 247
12.1.2 路徑名 248
12.1.3 r+和w+的區別 249
12.2 同時讀寫 249
12.3 斷行標誌符 251
12.4 文本格式和二進制格式 254
12.5 檔案末尾與feof函式 256
12.5.1 feof函式的基本知識 256
12.5.2 正確使用feof函式 260
12.6 檔案讀寫的錯誤處理 261
12.7 本章小結 262
第13章 Bug,錯誤及調試 264
13.1 Bug、錯誤(error)及異常(exception) 265
13.1.1 三個概念的區別 265
13.1.2 Debug和錯誤處理 266
13.2 Bug以及Debug 267
13.2.1 Bug的分類 267
13.2.2 bug的避免及發現 269
13.2.3 常見的Debug的工具和方法 274
13.2.4 程式設計師和bug 276
13.3 C語言中的錯誤處理機制 278
13.3.1 錯誤的檢測 278
13.3.2 錯誤的處理方法 280
13.4 面向對象語言中的異常處理機制 281
13.4.1 返回值返回錯誤的缺點 281
13.4.2 異常處理簡介 283
13.4.3 異常處理一般策略 285
13.5 本章小結 287
第14章 進階之路 289
14.1 程式的效率 289
14.2 C語言的使用原則 291
14.3 加深對C語言的理解 292
14.4 C,C++以及C#(java) 294
14.5 我們現在在哪裡? 296
14.6 計算機領域的繼續學習 298
參考文獻 301