第0章 C語言基礎 1
0.1 第二天,上帝創(chuàng)造了C 2
0.2 應該準備什么 3
0.3 熱身運動 3
0.4 留言板程序 14
0.5 一個程序的產生到結束 17
0.6 小結 18
0.7 習題 18
第1章 C語言數據類型 21
1.1 基礎中的基礎 22
1.1.1 變量及其定義過程 24
1.1.2 int、float(double)和char 26
1.1.3 變量賦初值 29
1.1.4 進制及換算 30
1.1.5 我變我變我變變變 35
1.1.6 堅定的常量 37
1.2 運算符和表達式并不像看上去那么簡單 41
1.2.1 +、-、*、/和% 42
1.2.2 “++”和“- -” 43
1.2.3 多樣化的賦值運算符及其表達式 45
1.2.4 逗號運算符和逗號表達式 46
1.2.5 孰大孰小 47
1.2.6 真真假假 48
1.2.7 言簡意賅的“?:”表達式 50
1.2.8 變量的量具sizeof 52
1.2.9 排一下順序是絕對必要的 52
1.3 小結 54
1.4 習題 55
第2章 C語言的流程控制 57
2.1 C語言程序設計的結構及基本語句 58
2.1.1 程序的3種基本結構 58
2.1.2 C語言的語句 59
2.1.3 賦值語句 61
2.1.4 數據輸出語句 61
2.1.5 數據輸入語句 66
2.2 岔路口的抉擇 69
2.2.1 if…else和else if 70
2.2.2 指哪打哪的switch 73
2.3 不可缺少的循環(huán)體 76
2.3.1 一勞永逸的while語句和for語句 76
2.3.2 貌合神離的while和do while語句 81
2.3.3 break還是continue 82
2.3.4 千里之堤往往潰于蟻穴 84
2.4 還差一點點 85
2.4.1 分不開的return和函數 86
2.4.2 自由主義的goto 86
2.5 小結 87
2.6 習題 89
第3章 C語言的數組和字符串 91
3.1 打開一個更廣闊的視野——一維數組 92
3.1.1 一維數組和字符串 92
3.1.2 一維數組和字符串的運算 101
3.2 向更高維進軍——二維數組和多維數組 110
3.2.1 二維數組的基本概念 110
3.2.2 二維字符數組 114
3.2.3 二維數組程序舉例 115
3.2.4 三維及三維以上數組 121
3.3 小結 121
3.4 習題 121
第4章 C語言的函數 123
4.1 函數無所不在 124
4.1.1 C語言的函數 124
4.1.2 為什么需要函數 126
4.1.3 種芝麻得西瓜 129
4.1.4 細說函數聲明 135
4.1.5 數組作為函數參數 136
4.1.6 對變量的又一次分類 142
4.1.7 遞歸——函數的自我調用 153
4.1.8 內部函數與外部函數 158
4.1.9 main函數 159
4.2 預處理——糧草先行 160
4.2.1 拿來主義者include 160
4.2.2 好好利用define提高程序可讀性 162
4.2.3 靈活的條件編譯 165
4.3 小結 168
4.4 習題 169
第5章 C語言的指針 171
5.1 指針不過是另外一種數據類型 172
5.1.1 從地址開始談起 172
5.1.2 指針變量和指針所指變量 173
5.1.3 正確書寫指針自加減 181
5.2 指針與數組——唇齒相依 183
5.2.1 指向一維數組的指針 183
5.2.2 指針也有更高維數 191
5.2.3 小心指針數組 196
5.2.4 **p 199
5.2.5 動態(tài)數組的實現 201
5.3 指針使函數充滿靈性 202
5.3.1 函數可以有指針嗎 202
5.3.2 理解函數返回的指針 211
5.3.3 函數的參數傳遞 212
5.4 小結 215
5.5 習題 216
第6章 struct、untion以及enum 219
6.1 struct——組合數據類型DIY 220
6.1.1 struct類型不等于struct類型變量 220
6.1.2 使用自定義的struct類型變量 224
6.1.3 一連串struct是什么樣的 226
6.2 指針,又見指針 228
6.2.1 通過指針使用struct變量 228
6.2.2 struct作為函數的參數和返回值 231
6.3 鏈表——另一種串式結構 232
6.4 union——共用體類型 240
6.5 enum——枚舉類型 244
6.6 使用typedef定義類型 247
6.7 小結 248
6.8 習題 249
第7章 C語言的位運算 251
7.1 無規(guī)則不成方圓——數據的編碼規(guī)則 252
7.1.1 字節(jié)和位 252
7.1.2 原碼 252
7.1.3 反碼 253
7.1.4 補碼 253
7.2 位運算的6種武器 255
7.2.1 “按位與”運算符& 255
7.2.2 “按位或”運算符| 256
7.2.3 “按位異或”運算符^ 257
7.2.4 “取反”運算符~ 258
7.2.5 “左移”運算符<< 258
7.2.6 “右移”運算符>> 259
7.2.7 不同長度的數據進行位運算 259
7.3 哪里需要使用位運算 260
7.4 小結 262
7.5 習題 262
第8章 C語言的文件操作 263
8.1 把文件看作一種數據類型 264
8.2 芝麻開門芝麻關門 265
8.2.1 打開文件的fopen 265
8.2.2 關閉文件的fclose 265
8.3 對文件進行讀和寫 266
8.3.1 fgetc、fputc、fgets和fputs 267
8.3.2 fscanf和fprintf 273
8.3.3 fread和fwrite——最常用的函數 277
8.3.4 fseek——步步為營 282
8.4 小結 285
8.5 習題 285
第9章 像程序員那樣Coding 287
9.1 首先讓程序看上去很美 288
9.1.1 {}與對齊 288
9.1.2 空格和空行 289
9.1.3 合理的長度 291
9.1.4 規(guī)范的注釋 291
9.2 名不正自然言不順 292
9.2.1 匈牙利命名法 293
9.2.2 變量的命名 293
9.2.3 函數與文件的命名 294
9.2.4 用宏替代 295
9.3 一些可能會碰到的問題 295
9.3.1 switch和break 295
9.3.2 比較問題 296
9.4 指針的陷阱 297
9.4.1 數組和指針 298
9.4.2 指針和內存 298
9.5 小結 300
9.6 習題 300
附錄 C語言常用函數參考 301
A.1 字符串函數 301
A.2 輸入/輸出函數 302
A.3 數學函數 304
A.4 屏幕和圖形函數 305
A.5 時間/日期函數 306
A.6 轉換函數 306
A.7 內存函數 306
A.8 接口/系統調用函數 307