內容簡介
C語言不僅是計算機學科的一門基礎語言,而且C語言高效、靈活,特別適合用來編寫操作硬體設備的程式,使得C語言在嵌入式領域有著廣泛的套用。本教材是作者多年講授C語言的經驗總結,強調可讀性和實用性,特別注重結合實例、講解知識點的能力目標。在語法講解方面遵守ANSI C標準,在程式設計思想方面強調模組化思想,在克服難點方面注重結構合理地安排內容、循序漸進地展開知識,在提高程式設計能力方面強調綜合運用知識的能力。特別是針對C語言的精髓——指針,將其相關內容合理地分散銜接為三個章節,注重由簡到難、逐步展開,便於讀者學習和掌握這部分內容。
圖書目錄
第1章初識C語言 1
1.1C語言與貝爾實驗室 1
1.2C程式的開發步驟 2
1.3使用VC++開發環境 4
1.3.1配置VC++6.0 5
1.3.2使用VC++6.0的步驟 7
1.4C語言的地位 10
1.5小結 11
習題1 11
第2章C程式的基本結構 13
2.1用函式封裝代碼 13
2.1.1問題的提出 13
2.1.2函式封裝代碼的思想 15
2.2C程式的基本結構 16
2.2.1基本結構 16
2.2.2main函式 16
2.2.3源檔案的結構 18
2.3編程風格 20
2.3.1Allmans風格 20
2.3.2Kernighan風格 21
2.3.3注釋 21
2.4小結 21
習題2 21
第3章標識符與基本數據類型 23
3.1標識符與關鍵字 23
3.1.1標識符 23
3.1.2關鍵字 24
3.2變數與記憶體 25
3.2.1了解記憶體 25
3.2.2為變數分配記憶體 25
3.2.3為變數賦值 25
3.2.4使用變數的基本原則 27
3.3整型類型 28
3.3.1整型常量 28
3.3.2int型變數 29
3.3.3short型變數 33
3.3.4long型變數 34
3.3.5無符號整型變數 34
3.4浮點類型 37
3.4.1浮點型常量 37
3.4.2float型變數 38
3.4.3double型變數 42
3.5字元型 43
3.5.1字元常量 43
3.5.2char型變數 44
3.6常量 46
3.6.1字面常量 46
3.6.2符號常量 46
3.6.3const常量 47
3.7數據轉換 48
3.8變數的地址和大小 49
3.9輸出數據 51
3.9.1printf函式 51
3.9.2putchar函式 53
3.10輸入數據 54
3.10.1scanf函式 54
3.10.2getchar函式 58
3.11小結 60
習題3 60
第4章運算符、表達式與語句 63
4.1運算符概述 63
4.2算術運算符與算術表達式 64
4.3賦值運算符與賦值表達式 65
4.4自增、自減運算符 66
4.5關係運算符與關係表達式 69
4.6邏輯運算符與邏輯表達式 71
4.7類型轉換運算符 72
4.8逗號運算符 73
4.9運算符與表達式小結 74
4.10語句 75
4.11小結 76
習題4 77
第5章分支語句 80
5.1if條件分支語句 80
5.2if-else條件分支語句 85
5.3if-elseif-else條件分支語句 90
5.4switch開關語句 93
5.5條件運算符 95
5.6exit函式與程式的輸入錯誤 96
5.7小結 97
習題5 97
第6章循環語句 101
6.1while循環語句 101
6.2do-while循環語句 109
6.3for循環語句 111
6.4break和continue語句 115
6.5循環嵌套 116
6.6小結 118
習題6 118
第7章函式的結構與調用 123
7.1函式概述 123
7.2有關函式的重要術語 124
7.2.1函式頭 124
7.2.2函式原型 124
7.2.3函式定義 125
7.3無參函式與有參函式的定義 127
7.3.1無參函式的定義 127
7.3.2有參函式的定義 127
7.4函式的類型與return語句 128
7.4.1基本類型 128
7.4.2void型 130
7.5函式的調用與參數傳值 131
7.5.1調用無參數函式 132
7.5.2調用有參數函式 132
7.6函式封裝代碼的思想 135
7.7函式的遞歸調用 138
7.7.1遞歸調用的發生 138
7.7.2遞歸的套用 139
7.7.3遞歸的缺點 142
7.8局部變數與全局變數 143
7.8.1局部變數 143
7.8.2全局變數 144
7.9變數的存儲方式 147
7.9.1局部變數 147
7.9.2全局變數 149
7.10限制全局變數的有效範圍 149
7.11小結 149
習題7 150
第8章數組 154
8.1一維數組 154
8.1.1一維數組的定義 154
8.1.2一維數組的結構 155
8.1.3一維數組的使用 157
8.1.4怎樣獲取一維數組的長度 158
8.1.5一維數組的初始化 159
8.1.6避免下標越界 160
8.2數組名作參數 161
8.2.1一個重要的結論 161
8.2.2形參與數組 162
8.3起泡法 164
8.4二維數組 167
8.4.1二維數組的定義 167
8.4.2二維數組的結構 168
8.4.3二維數組的初始化 169
8.4.4二維數組的使用 169
8.5const數組 171
8.6綜合舉例 173
8.6.1選擇排序法 173
8.6.2折半法 174
8.6.3存儲並輸出楊輝三角形 176
8.6.4計算矩陣的乘積 177
8.7小結 178
習題8 178
第9章指針 181
9.1概述 181
9.2指針變數 182
9.2.1指針變數的聲明 182
9.2.2指針變數與取地址運算符 183
9.3指針訪問所指向的變數 184
9.3.1間接訪問運算符 184
9.3.2間接訪問與直接訪問 184
9.3.3注意事項 185
9.4指針的加減運算 186
9.4.1指針遞增 186
9.4.2指針遞減 187
9.4.3兩個指針作減法 187
9.4.4指針自增(自減)的重要結論 188
9.5指針作參數 188
9.5.1函式的原型與實現 188
9.5.2傳遞變數的值 190
9.5.3傳遞變數的地址 190
9.6指針與函式之間的互動 192
9.7指向指針的指針 193
9.8const指針 194
9.9綜合舉例 195
9.10小結 196
習題9 196
第10章指針與數組 199
10.1指向數組元素的指針 199
10.2數組名與間接訪問運算符 201
10.2.1數組名的自增、自減運算 201
10.2.2間接訪問運算符作用於數組名 202
10.3指針作參數訪問數組 203
10.4指針與下標運算 204
10.5指針與二維數組 205
10.5.1指向二維數組元素的指針 205
10.5.2二維數組的名字與間接訪問運算符 206
10.6指針數組 207
10.7指向行的指針 209
10.8綜合舉例 210
10.8.1旋轉數組 210
10.8.2圍圈留一 212
10.9小結 213
習題10 213
第11章指針與函式 216
11.1函式的入口地址與指針變數 216
11.1.1函式的入口地址 216
11.1.2指向函式的指針變數 217
11.2指向函式的指針作參數 219
11.3讓函式更易維護 220
11.3.1顯示廣告詞的函式 221
11.3.2間接調用的好處 222
11.4返回地址的函式 222
11.5指針的分類 224
11.6小結 225
習題11 225
第12章處理字元串 228
12.1字元串常量 228
12.2char型數組與字元串 229
12.2.1字元數組及初始化 230
12.2.2puts函式與gets函式 232
12.3指針與字元串 233
12.4複製字元串 234
12.5連線字元串 235
12.6比較字元串 236
12.7檢索字元串 237
12.8字元串轉換為數字 240
12.9綜合舉例 241
12.9.1統計單詞 241
12.9.2排序字元串 242
12.9.3輸出商品列表 243
12.9.4將字元串轉換為整數 246
12.9.5加密字元串 247
12.10小結 248
習題12 248
第13章結構體、共用體與枚舉 252
13.1結構體類型與結構體變數 252
13.1.1描述商品信息 252
13.1.2結構體類型 253
13.1.3結構體變數 253
13.1.4訪問結構體變數的成員 255
13.1.5結構體變數的賦值操作 256
13.2使用typedef關鍵字 256
13.3指針與結構體變數 257
13.3.1指向結構體變數的指針 257
13.3.2通過指針訪問結構體變數的成員 258
13.4結構體變數的初始化 259
13.5結構體數組 260
13.6結構體的嵌套 261
13.7結構體與函式 261
13.8共用體 262
13.8.1共用體類型與共用體類型變數 263
13.8.2共用體類型變數的特點 263
13.8.3通過指針訪問共用體變數的成員 264
13.9枚舉 265
13.9.1定義枚舉類型 265
13.9.2聲明枚舉變數 265
13.10綜合舉例 266
13.11小結 268
習題13 268
第14章讀寫檔案 271
14.1什麼是檔案 271
14.1.1二進制檔案 271
14.1.2文本檔案 272
14.2打開與關閉檔案 273
14.2.1FILE指針 273
14.2.2打開檔案 273
14.2.3關閉檔案 274
14.3讀寫文本檔案 274
14.3.1按文本方式打開檔案 274
14.3.2按文本方式讀檔案 275
14.3.3按文本方式寫檔案 277
14.4讀寫二進制檔案 279
14.4.1按二進制方式打開檔案 279
14.4.2按二進制方式寫檔案 280
14.4.3按二進制方式讀檔案 281
14.5讀寫位置與隨機讀寫 283
14.5.1rewind和ftell函式 283
14.5.2fseek函式 284
14.6複製檔案 285
14.7綜合舉例 286
14.7.1標準化考試 286
14.7.2保存商品信息 287
14.7.3加密、解密檔案 289
14.8小結 290
習題14 290
第15章鍊表 293
15.1初識鍊表 293
15.2鍊表與節點 294
15.2.1空鍊表 295
15.2.2鍊表的節點 295
15.2.3創建一個簡單的鍊表 296
15.3頭插法創建鍊表 297
15.4尾插法創建鍊表 299
15.5鍊表的插入操作 300
15.6鍊表的刪除操作 303
15.7綜合舉例 305
15.7.1旋轉鍊表 305
15.7.2圍圈留一 308
15.8小結 309
習題15 309
第16章預處理指令 310
16.1宏指令 310
16.1.1不帶參數的宏指令 310
16.1.2帶參數的宏指令 311
16.2檔案包含指令 312
16.2.1包含源檔案 313
16.2.2包含頭檔案 314
16.2.3math.h和time.h 314
16.3條件編譯指令 317
16.3.1#ifdef條件編譯指令 317
16.3.2#ifndef條件編譯指令 318
16.3.3#if常量表達式 319
16.4小結 320
習題16 320
第17章位運算 323
17.1位運算符和位運算 323
17.1.1“按位與”運算符 324
17.1.2“按位或”運算符 325
17.1.3“按位非”運算符 325
17.1.4“按位異或”運算符 326
17.1.5左移位運算符 327
17.1.6右移位運算符 327
17.2位段 328
17.2.1結構體與位段 328
17.2.2隔開位段 329
17.3小結 330
習題17 330
附錄A標準ASCII表 332
附錄B運算符表 333
附錄Cmath與string庫函式 334
參考文獻 336