《C Primer Plus(第6版)中文版》詳細(xì)講解了C語言的基本概念和編程技巧。 《C Primer Plus(第6版)中文版》共17章。第1章、第2章介紹了C語言編程的預(yù)備知識(shí)。第3章~第15章詳細(xì)講解了C語言的相關(guān)知識(shí),包括數(shù)據(jù)類型、格式化輸入/輸出、運(yùn)算符、表達(dá)式、語句、循環(huán)、字符輸入和輸出、函數(shù)、數(shù)組和指針、字符和字符串函數(shù)、內(nèi)存管理、文件輸入和輸出、結(jié)構(gòu)、位操作等。第16章、第17章介紹C預(yù)處理器、C庫(kù)和高級(jí)數(shù)據(jù)表示。本書以豐富多樣的程序?yàn)槔,講解C語言的知識(shí)要點(diǎn)和注意事項(xiàng)。每章末尾設(shè)計(jì)了大量復(fù)習(xí)題和編程練習(xí),幫助讀者鞏固所學(xué)知識(shí)和提高實(shí)際編程能力。附錄給出了各章復(fù)習(xí)題的參考答案和豐富的參考資料。 《C Primer Plus(第6版)中文版》可作為C語言的教材,適用于需要系統(tǒng)學(xué)習(xí)C語言的初學(xué)者,也適用于想要鞏固C語言知識(shí)或希望進(jìn)一步提高編程技術(shù)的程序員。
經(jīng)久不衰的C語言暢銷經(jīng)典教程 中文版累計(jì)銷量近百萬冊(cè) 針對(duì)C11標(biāo)準(zhǔn)進(jìn)行全面更新 隨書附贈(zèng)1-6章的重難點(diǎn)解析及習(xí)題解答 《C Primer Plus(第6版)中文版》是一本經(jīng)過仔細(xì)測(cè)試、精心設(shè)計(jì)的完整C語言教程,它涵蓋了C語言編程中的核心內(nèi)容!禖 Primer Plus(第6版)中文版》作為計(jì)算機(jī)科學(xué)的經(jīng)典著作,講解了包含結(jié)構(gòu)化代碼和自頂向下設(shè)計(jì)在內(nèi)的程序設(shè)計(jì)原則。 與以前的版本一樣,作者的目標(biāo)仍舊是為讀者提供一本入門型、條理清晰、見解深刻的C語言教程。作者把基礎(chǔ)的編程概念與C語言的細(xì)節(jié)很好地融合在一起,并通過大量短小精悍的示例同時(shí)演示一兩個(gè)概念,通過學(xué)以致用的方式鼓勵(lì)讀者掌握新的主題。 每章末尾的復(fù)習(xí)題和編程練習(xí)題進(jìn)一步強(qiáng)化了*重要的信息,有助于讀者理解和消化那些難以理解的概念。本書采用了友好、易于使用的編排方式,不僅適合打算認(rèn)真學(xué)習(xí)C語言編程的學(xué)生閱讀,也適合那些精通其他編程語言,但希望更好地掌握C語言這門核心語言的開發(fā)人員閱讀。 《C Primer Plus(第6版)中文版》在之前版本的基礎(chǔ)之上進(jìn)行了全新升級(jí),它涵蓋了C語言*的進(jìn)展以及C11標(biāo)準(zhǔn)的詳細(xì)內(nèi)容。本書還提供了大量深度與廣度齊備的教學(xué)技術(shù)和工具,來提高你的學(xué)習(xí)。 ·詳細(xì)完整地討論了C語言的基礎(chǔ)特性和附加特性; ·清晰解釋了使用C語言不同部分的時(shí)機(jī),以及原因; ·通過簡(jiǎn)潔、簡(jiǎn)單的示例加強(qiáng)讀者的動(dòng)手練習(xí),以幫助一次理解一兩個(gè)概念; ·囊括了數(shù)百個(gè)實(shí)用的代碼示例; ·每章末尾的復(fù)習(xí)題和編程練習(xí)可以檢測(cè)你的理解情況。 ·涵蓋了C泛型編程,以提供*的靈活性。
Stephen Prata在美國(guó)加州肯特菲爾得的馬林學(xué)院教授天文、物理和計(jì)算機(jī)科學(xué)。除了本書之前版本,他還是C Primer Plus的作者。他編寫的New C Primer Plus獲得了計(jì)算機(jī)出版聯(lián)合會(huì)1990年度最佳How-to計(jì)算機(jī)圖書獎(jiǎng),C Primer Plus獲得了計(jì)算機(jī)出版聯(lián)合會(huì)1991年度最佳How-to計(jì)算機(jī)圖書獎(jiǎng)提名。
第 1章 初識(shí)C語言 1
1.1 C語言的起源 1
1.2 選擇C語言的理由 1
1.2.1 設(shè)計(jì)特性 1
1.2.2 高效性 1
1.2.3 可移植性 2
1.2.4 強(qiáng)大而靈活 2
1.2.5 面向程序員 2
1.2.6 缺點(diǎn) 3
1.3 C語言的應(yīng)用范圍 3
1.4 計(jì)算機(jī)能做什么 4
1.5 高級(jí)計(jì)算機(jī)語言和編譯器 4
1.6 語言標(biāo)準(zhǔn) 5
1.6.1 第 1個(gè)ANSI/ISO C標(biāo)準(zhǔn) 5
1.6.2 C99標(biāo)準(zhǔn) 6
1.6.3 C11標(biāo)準(zhǔn) 6
1.7 使用C語言的7個(gè)步驟 6
1.7.1 第 1步:定義程序的目標(biāo) 7
1.7.2 第 2步:設(shè)計(jì)程序 7
1.7.3 第3步:編寫代碼 7
1.7.4 第4步:編譯 8
1.7.5 第5步:運(yùn)行程序 8
1.7.6 第6步:測(cè)試和調(diào)試程序 8
1.7.7 第7步:維護(hù)和修改代碼 8
1.7.8 說明 9
1.8 編程機(jī)制 9
1.8.1 目標(biāo)代碼文件、可執(zhí)行文件和庫(kù) 9
1.8.2 UNIX系統(tǒng) 10
1.8.3 GNU編譯器集合和LLVM項(xiàng)目 12
1.8.4 Linux系統(tǒng) 12
1.8.5 PC的命令行編譯器 12
1.8.6 集成開發(fā)環(huán)境(Windows) 13
1.8.7 Windows/Linux 14
1.8.8 Macintosh中的C 14
1.9 本書的組織結(jié)構(gòu) 14
1.10 本書的約定 15
1.10.1 字體 15
1.10.2 程序輸出 15
1.10.3 特殊元素 16
1.11 本章小結(jié) 16
1.12 復(fù)習(xí)題 16
1.13 編程練習(xí) 16
第 2章 C語言概述 17
2.1 簡(jiǎn)單的C程序示例 17
2.2 示例解釋 18
2.2.1 第 1遍:快速概要 18
2.2.2 第 2遍:程序細(xì)節(jié) 19
2.3 簡(jiǎn)單程序的結(jié)構(gòu) 24
2.4 提高程序可讀性的技巧 25
2.5 進(jìn)一步使用C 26
2.5.1 程序說明 26
2.5.2 多條聲明 27
2.5.3 乘法 27
2.5.4 打印多個(gè)值 27
2.6 多個(gè)函數(shù) 27
2.7 調(diào)試程序 28
2.7.1 語法錯(cuò)誤 29
2.7.2 語義錯(cuò)誤 29
2.7.3 程序狀態(tài) 30
2.8 關(guān)鍵字和保留標(biāo)識(shí)符 31
2.9 關(guān)鍵概念 31
2.10 本章小結(jié) 31
2.11 復(fù)習(xí)題 32
2.12 編程練習(xí) 33
第3章 數(shù)據(jù)和C 34
3.1 示例程序 34
3.1.1 程序中的新元素 35
3.2 變量與常量數(shù)據(jù) 36
3.3 數(shù)據(jù):數(shù)據(jù)類型關(guān)鍵字 36
3.3.1 整數(shù)和浮點(diǎn)數(shù) 37
3.3.2 整數(shù) 37
3.3.3 浮點(diǎn)數(shù) 38
3.4 C語言基本數(shù)據(jù)類型 38
3.4.1 int類型 38
3.4.2 其他整數(shù)類型 41
3.4.3 使用字符:char類型 44
3.4.4 _Bool類型 48
3.4.5 可移植類型:stdint.h和
inttypes.h 48
3.4.6 float、double和
long double 49
3.4.7 復(fù)數(shù)和虛數(shù)類型 52
3.4.8 其他類型 53
3.4.9 類型大小 54
3.5 使用數(shù)據(jù)類型 55
3.6 參數(shù)和陷阱 55
3.7 轉(zhuǎn)義序列示例 56
3.7.1 程序運(yùn)行情況 57
3.7.2 刷新輸出 57
3.8 關(guān)鍵概念 58
3.9 本章小結(jié) 58
3.10 復(fù)習(xí)題 58
3.11 編程練習(xí) 60
第4章 字符串和格式化輸入/輸出 61
4.1 前導(dǎo)程序 61
4.2 字符串簡(jiǎn)介 62
4.2.1 char類型數(shù)組和null字符 62
4.2.2 使用字符串 63
4.2.3 strlen()函數(shù) 63
4.3 常量和C預(yù)處理器 65
4.3.1 const限定符 67
4.3.2 明示常量 67
4.4 printf()和scanf() 69
4.4.1 printf()函數(shù) 69
4.4.2 使用printf() 70
4.4.3 printf()的轉(zhuǎn)換說明修飾符 71
4.4.4 轉(zhuǎn)換說明的意義 75
4.4.5 使用scanf() 79
4.4.6 printf()和scanf()的*
修飾符 82
4.4.7 printf()的用法提示 83
4.5 關(guān)鍵概念 84
4.6 本章小結(jié) 85
4.7 復(fù)習(xí)題 85
4.8 編程練習(xí) 87
第5章 運(yùn)算符、表達(dá)式和語句 88
5.1 循環(huán)簡(jiǎn)介 88
5.2 基本運(yùn)算符 90
5.2.1 賦值運(yùn)算符:= 90
5.2.2 加法運(yùn)算符: 91
5.2.3 減法運(yùn)算符:- 92
5.2.4 符號(hào)運(yùn)算符:-和 92
5.2.5 乘法運(yùn)算符:* 92
5.2.6 除法運(yùn)算符:/ 93
5.2.7 運(yùn)算符優(yōu)先級(jí) 94
5.2.8 優(yōu)先級(jí)和求值順序 95
5.3 其他運(yùn)算符 96
5.3.1 sizeof運(yùn)算符和size_t類型 96
5.3.2 求模運(yùn)算符:% 97
5.3.3 遞增運(yùn)算符: 98
5.3.4 遞減運(yùn)算符:-- 100
5.3.5 優(yōu)先級(jí) 101
5.3.6 不要自作聰明 101
5.4 表達(dá)式和語句 102
5.4.1 表達(dá)式 102
5.4.2 語句 103
5.4.3 復(fù)合語句(塊) 105
5.5 類型轉(zhuǎn)換 106
5.6 帶參數(shù)的函數(shù) 109
5.7 示例程序 110
5.8 關(guān)鍵概念 111
5.9 本章小結(jié) 112
5.10 復(fù)習(xí)題 112
5.11 編程練習(xí) 114
第6章 C控制語句:循環(huán) 116
6.1 再探while循環(huán) 116
6.1.1 程序注釋 117
6.1.2 C風(fēng)格讀取循環(huán) 118
6.2 while語句 118
6.2.1 終止while循環(huán) 119
6.2.2 何時(shí)終止循環(huán) 119
6.2.3 while:入口條件循環(huán) 120
6.2.4 語法要點(diǎn) 120
6.3 用關(guān)系運(yùn)算符和表達(dá)式比較大小 121
6.3.1 什么是真 122
6.3.2 其他真值 123
6.3.3 真值的問題 124
6.3.4 新的_Bool類型 125
6.3.5 優(yōu)先級(jí)和關(guān)系運(yùn)算符 126
6.4 不確定循環(huán)和計(jì)數(shù)循環(huán) 127
6.5 for循環(huán) 128
6.6 其他賦值運(yùn)算符: =、-=、*=、
/=、%= 132
6.7 逗號(hào)運(yùn)算符 133
6.8 出口條件循環(huán):do while 136
6.9 如何選擇循環(huán) 138
6.10 嵌套循環(huán) 138
6.10.1 程序分析 139
6.10.2 嵌套變式 139
6.11 數(shù)組簡(jiǎn)介 140
6.12 使用函數(shù)返回值的循環(huán)示例 142
6.12.1 程序分析 144
6.12.2 使用帶返回值的函數(shù) 144
6.13 關(guān)鍵概念 145
6.14 本章小結(jié) 145
6.15 復(fù)習(xí)題 146
6.16 編程練習(xí) 149
第7章 C控制語句:分支和跳轉(zhuǎn) 151
7.1 if語句 151
7.2 if else語句 152
7.2.1 另一個(gè)示例:介紹getchar()和putchar() 153
7.2.2 ctype.h系列的字符函數(shù) 155
7.2.3 多重選擇else if 156
7.2.4 else與if配對(duì) 158
7.2.5 多層嵌套的if語句 159
7.3 邏輯運(yùn)算符 162
7.3.1 備選拼寫:iso646.h頭文件 163
7.3.2 優(yōu)先級(jí) 164
7.3.3 求值順序 164
7.3.4 范圍 165
7.4 一個(gè)統(tǒng)計(jì)單詞的程序 165
7.5 條件運(yùn)算符: : 168
7.6 循環(huán)輔助:continue和break 169
7.6.1 continue語句 169
7.6.2 break語句 171
7.7 多重選擇:switch和break 173
7.7.1 switch語句 174
7.7.2 只讀每行的首字符 176
7.7.3 多重標(biāo)簽 176
7.7.4 switch和if else 178
7.8 goto語句 178
7.9 關(guān)鍵概念 181
7.10 本章小結(jié) 181
7.11 復(fù)習(xí)題 181
7.12 編程練習(xí) 184
第8章 字符輸入/輸出和輸入驗(yàn)證 186
8.1 單字符I/O:getchar()和
putchar() 186
8.2 緩沖區(qū) 187
8.3 結(jié)束鍵盤輸入 188
8.3.1 文件、流和鍵盤輸入 188
8.3.2 文件結(jié)尾 189
8.4 重定向和文件 191
8.5 創(chuàng)建更友好的用戶界面 194
8.5.1 使用緩沖輸入 194
8.5.2 混合數(shù)值和字符輸入 196
8.6 輸入驗(yàn)證 198
8.6.1 分析程序 201
8.6.2 輸入流和數(shù)字 201
8.7 菜單瀏覽 202
8.7.1 任務(wù) 202
8.7.2 使執(zhí)行更順利 202
8.7.3 混合字符和數(shù)值輸入 204
8.8 關(guān)鍵概念 206
8.9 本章小結(jié) 206
8.10 復(fù)習(xí)題 207
8.11 編程練習(xí) 208
第9章 函數(shù) 209
9.1 復(fù)習(xí)函數(shù) 209
9.1.1 創(chuàng)建并使用簡(jiǎn)單函數(shù) 210
9.1.2 分析程序 210
9.1.3 函數(shù)參數(shù) 212
9.1.4 定義帶形式參數(shù)的函數(shù) 213
9.1.5 聲明帶形式參數(shù)函數(shù)的原型 214
9.1.6 調(diào)用帶實(shí)際參數(shù)的函數(shù) 214
9.1.7 黑盒視角 215
9.1.8 使用return從函數(shù)中返回值 215
9.1.9 函數(shù)類型 217
9.2 ANSI C函數(shù)原型 218
9.2.1 問題所在 218
9.2.2 ANSI的解決方案 219
9.2.3 無參數(shù)和未指定參數(shù) 220
9.2.4 函數(shù)原型的優(yōu)點(diǎn) 220
9.3 遞歸 220
9.3.1 演示遞歸 220
9.3.2 遞歸的基本原理 221
9.3.3 尾遞歸 222
9.3.4 遞歸和倒序計(jì)算 224
9.3.5 遞歸的優(yōu)缺點(diǎn) 225
9.4 編譯多源代碼文件的程序 226
9.4.1 UNIX 226
9.4.2 Linux 226
9.4.3 DOS命令行編譯器 226
9.4.4 Windows和蘋果的IDE編譯器 226
9.4.5 使用頭文件 226
9.5 查找地址:&運(yùn)算符 229
9.6 更改主調(diào)函數(shù)中的變量 230
9.7 指針簡(jiǎn)介 231
9.7.1 間接運(yùn)算符:* 232
9.7.2 聲明指針 232
9.7.3 使用指針在函數(shù)間通信 233
9.8 關(guān)鍵概念 236
9.9 本章小結(jié) 236
9.10 復(fù)習(xí)題 236
9.11 編程練習(xí) 237
第 10章 數(shù)組和指針 238
10.1 數(shù)組 238
10.1.1 初始化數(shù)組 238
10.1.2 指定初始化器(C99) 241
10.1.3 給數(shù)組元素賦值 242
10.1.4 數(shù)組邊界 243
10.1.5 指定數(shù)組的大小 244
10.2 多維數(shù)組 244
10.2.1 初始化二維數(shù)組 247
10.2.2 其他多維數(shù)組 247
10.3 指針和數(shù)組 248
10.4 函數(shù)、數(shù)組和指針 250
10.4.1 使用指針形參 251
10.4.2 指針表示法和數(shù)組表示法 253
10.5 指針操作 253
10.6 保護(hù)數(shù)組中的數(shù)據(jù) 256
10.6.1 對(duì)形式參數(shù)使用const 257
10.6.2 const的其他內(nèi)容 258
10.7 指針和多維數(shù)組 259
10.7.1 指向多維數(shù)組的指針 261
10.7.2 指針的兼容性 262
10.7.3 函數(shù)和多維數(shù)組 263
10.8 變長(zhǎng)數(shù)組(VLA) 266
10.9 復(fù)合字面量 269
10.10 關(guān)鍵概念 270
10.11 本章小結(jié) 271
10.12 復(fù)習(xí)題 271
10.13 編程練習(xí) 273
第 11章 字符串和字符串函數(shù) 275
11.1 表示字符串和字符串I/O 275
11.1.1 在程序中定義字符串 276
11.1.2 指針和字符串 281
11.2 字符串輸入 282
11.2.1 分配空間 282
11.2.2 不幸的gets()函數(shù) 282
11.2.3 gets()的替代品 283
11.2.4 scanf()函數(shù) 288
11.3 字符串輸出 289
11.3.1 puts()函數(shù) 289
11.3.2 fputs()函數(shù) 290
11.3.3 printf()函數(shù) 291
11.4 自定義輸入/輸出函數(shù) 291
11.5 字符串函數(shù) 293
11.5.1 strlen()函數(shù) 293
11.5.2 strcat()函數(shù) 294
11.5.3 strncat()函數(shù) 295
11.5.4 strcmp()函數(shù) 296
11.5.5 strcpy()和strncpy()函數(shù) 301
11.5.6 sprintf()函數(shù) 305
11.5.7 其他字符串函數(shù) 306
11.6 字符串示例:字符串排序 307
11.6.1 排序指針而非字符串 308
11.6.2 選擇排序算法 309
11.7 ctype.h字符函數(shù)和字符串 310
11.8 命令行參數(shù) 311
11.8.1 集成環(huán)境中的命令行參數(shù) 312
11.8.2 Macintosh中的命令行參數(shù) 312
11.9 把字符串轉(zhuǎn)換為數(shù)字 313
11.10 關(guān)鍵概念 315
11.11 本章小結(jié) 315
11.12 復(fù)習(xí)題 316
11.13 編程練習(xí) 318
第 12章 存儲(chǔ)類別、鏈接和內(nèi)存管理 320
12.1 存儲(chǔ)類別 320
12.1.1 作用域 321
12.1.2 鏈接 322
12.1.3 存儲(chǔ)期 323
12.1.4 自動(dòng)變量 324
12.1.5 寄存器變量 326
12.1.6 塊作用域的靜態(tài)變量 327
12.1.7 外部鏈接的靜態(tài)變量 328
12.1.8 內(nèi)部鏈接的靜態(tài)變量 331
12.1.9 多文件 331
12.1.10 存儲(chǔ)類別說明符 332
12.1.11 存儲(chǔ)類別和函數(shù) 334
12.1.12 存儲(chǔ)類別的選擇 334
12.2 隨機(jī)數(shù)函數(shù)和靜態(tài)變量 334
12.3 擲骰子 337
12.4 分配內(nèi)存:malloc()和free() 340
12.4.1 free()的重要性 343
12.4.2 calloc()函數(shù) 343
12.4.3 動(dòng)態(tài)內(nèi)存分配和變長(zhǎng)數(shù)組 344
12.4.4 存儲(chǔ)類別和動(dòng)態(tài)內(nèi)存分配 344
12.5 ANSI C類型限定符 346
12.5.1 const類型限定符 346
12.5.2 volatile類型限定符 347
12.5.3 restrict類型限定符 348
12.5.4 _Atomic類型限定符(C11) 349
12.5.5 舊關(guān)鍵字的新位置 349
12.6 關(guān)鍵概念 349
12.7 本章小結(jié) 350
12.8 復(fù)習(xí)題 350
12.9 編程練習(xí) 352
第 13章 文件輸入/輸出 354
13.1 與文件進(jìn)行通信 354
13.1.1 文件是什么 354
13.1.2 文本模式和二進(jìn)制模式 354
13.1.3 I/O的級(jí)別 355
13.1.4 標(biāo)準(zhǔn)文件 356
13.2 標(biāo)準(zhǔn)I/O 356
13.2.1 檢查命令行參數(shù) 357
13.2.2 fopen()函數(shù) 357
13.2.3 getc()和putc()函數(shù) 358
13.2.4 文件結(jié)尾 358
13.2.5 fclose()函數(shù) 359
13.2.6 指向標(biāo)準(zhǔn)文件的指針 359
13.3 一個(gè)簡(jiǎn)單的文件壓縮程序 360
13.4 文件I/O:fprintf()、fscanf()、
fgets()和fputs() 361
13.4.1 fprintf()和fscanf()
函數(shù) 361
13.4.2 fgets()和fputs()函數(shù) 362
13.5 隨機(jī)訪問:fseek()和ftell() 363
13.5.1 fseek()和ftell()的工作
原理 364
13.5.2 二進(jìn)制模式和文本模式 365
13.5.3 可移植性 365
13.5.4 fgetpos()和fsetpos()
函數(shù) 365
13.6 標(biāo)準(zhǔn)I/O的機(jī)理 366
13.7 其他標(biāo)準(zhǔn)I/O函數(shù) 366
13.7.1 int ungetc(int c, FILE *fp)
函數(shù) 367
13.7.2 int fflush()函數(shù) 367
13.7.3 int setvbuf()函數(shù) 367
13.7.4 二進(jìn)制I/O:fread()
和fwrite() 367
13.7.5 size_t fwrite()函數(shù) 368
13.7.6 size_t fread()函數(shù) 369
13.7.7 int feof(FILE *fp)和
int ferror(FILE *fp)
函數(shù) 369
13.7.8 一個(gè)程序示例 369
13.7.9 用二進(jìn)制I/O進(jìn)行隨機(jī)訪問 372
13.8 關(guān)鍵概念 373
13.9 本章小結(jié) 373
13.10 復(fù)習(xí)題 374
13.11 編程練習(xí) 375
第 14章 結(jié)構(gòu)和其他數(shù)據(jù)形式 377
14.1 示例問題:創(chuàng)建圖書目錄 377
14.2 建立結(jié)構(gòu)聲明 378
14.3 定義結(jié)構(gòu)變量 379
14.3.1 初始化結(jié)構(gòu) 380
14.3.2 訪問結(jié)構(gòu)成員 380
14.3.3 結(jié)構(gòu)的初始化器 381
14.4 結(jié)構(gòu)數(shù)組 381
14.4.1 聲明結(jié)構(gòu)數(shù)組 383
14.4.2 標(biāo)識(shí)結(jié)構(gòu)數(shù)組的成員 383
14.4.3 程序討論 384
14.5 嵌套結(jié)構(gòu) 384
14.6 指向結(jié)構(gòu)的指針 386
14.6.1 聲明和初始化結(jié)構(gòu)指針 387
14.6.2 用指針訪問成員 387
14.7 向函數(shù)傳遞結(jié)構(gòu)的信息 387
14.7.1 傳遞結(jié)構(gòu)成員 388
14.7.2 傳遞結(jié)構(gòu)的地址 388
14.7.3 傳遞結(jié)構(gòu) 389
14.7.4 其他結(jié)構(gòu)特性 390
14.7.5 結(jié)構(gòu)和結(jié)構(gòu)指針的選擇 393
14.7.6 結(jié)構(gòu)中的字符數(shù)組和字符指針 394
14.7.7 結(jié)構(gòu)、指針和malloc() 394
14.7.8 復(fù)合字面量和結(jié)構(gòu)(C99) 397
14.7.9 伸縮型數(shù)組成員(C99) 398
14.7.10 匿名結(jié)構(gòu)(C11) 400
14.7.11 使用結(jié)構(gòu)數(shù)組的函數(shù) 400
14.8 把結(jié)構(gòu)內(nèi)容保存到文件中 401
14.8.1 保存結(jié)構(gòu)的程序示例 402
14.8.2 程序要點(diǎn) 404
14.9 鏈?zhǔn)浇Y(jié)構(gòu) 405
14.10 聯(lián)合簡(jiǎn)介 405
14.10.1 使用聯(lián)合 406
14.10.2 匿名聯(lián)合(C11) 407
14.11 枚舉類型 408
14.11.1 enum常量 408
14.11.2 默認(rèn)值 408
14.11.3 賦值 409
14.11.4 enum的用法 409
14.11.5 共享名稱空間 410
14.12 typedef簡(jiǎn)介 411
14.13 其他復(fù)雜的聲明 412
14.14 函數(shù)和指針 413
14.15 關(guān)鍵概念 418
14.16 本章小結(jié) 418
14.17 復(fù)習(xí)題 419
14.18 編程練習(xí) 421
第 15章 位操作 423
15.1 二進(jìn)制數(shù)、位和字節(jié) 423
15.1.1 二進(jìn)制整數(shù) 423
15.1.2 有符號(hào)整數(shù) 424
15.1.3 二進(jìn)制浮點(diǎn)數(shù) 424
15.2 其他進(jìn)制數(shù) 425
15.2.1 八進(jìn)制 425
15.2.2 十六進(jìn)制 425
15.3 C按位運(yùn)算符 426
15.3.1 按位邏輯運(yùn)算符 426
15.3.2 用法:掩碼 427
15.3.3 用法:打開位(設(shè)置位) 428
15.3.4 用法:關(guān)閉位(清空位) 428
15.3.5 用法:切換位 428
15.3.6 用法:檢查位的值 429
15.3.7 移位運(yùn)算符 429
15.3.8 編程示例 430
15.3.9 另一個(gè)例子 432
15.4 位字段 433
15.4.1 位字段示例 434
15.4.2 位字段和按位運(yùn)算符 437
15.5 對(duì)齊特性(C11) 442
15.6 關(guān)鍵概念 443
15.7 本章小結(jié) 443
15.8 復(fù)習(xí)題 444
15.9 編程練習(xí) 445
第 16章 C預(yù)處理器和C庫(kù) 447
16.1 翻譯程序的第 一步 447
16.2 明示常量:#define 448
16.2.1 記號(hào) 450
16.2.2 重定義常量 450
16.3 在#define中使用參數(shù) 451
16.3.1 用宏參數(shù)創(chuàng)建字符串:#
運(yùn)算符 452
16.3.2 預(yù)處理器黏合劑:##運(yùn)算符 453
16.3.3 變參宏:...和_ _VA_ARGS_ _ 454
16.4 宏和函數(shù)的選擇 454
16.5 文件包含:#include 455
16.5.1 頭文件示例 456
16.5.2 使用頭文件 457
16.6 其他指令 458
16.6.1 #undef指令 458
16.6.2 從C預(yù)處理器角度看已定義 458
16.6.3 條件編譯 459
16.6.4 預(yù)定義宏 462
16.6.5 #line和#error 463
16.6.6 #pragma 463
16.6.7 泛型選擇(C11) 464
16.7 內(nèi)聯(lián)函數(shù)(C99) 465
16.8 _Noreturn函數(shù)(C11) 467
16.9 C庫(kù) 467
16.9.1 訪問C庫(kù) 467
16.9.2 使用庫(kù)描述 468
16.10 數(shù)學(xué)庫(kù) 469
16.10.1 三角問題 469
16.10.2 類型變體 471
16.10.3 tgmath.h庫(kù)(C99) 472
16.11 通用工具庫(kù) 472
16.11.1 exit()和atexit()函數(shù) 472
16.11.2 qsort()函數(shù) 474
16.12 斷言庫(kù) 477
16.12.1 assert的用法 477
16.12.2 _Static_assert(C11) 478
16.13 string.h庫(kù)中的memcpy()和
memmove() 479
16.14 可變參數(shù):stdarg.h 481
16.15 關(guān)鍵概念 482
16.16 本章小結(jié) 483
16.17 復(fù)習(xí)題 483
16.18 編程練習(xí) 484
第 17章 高級(jí)數(shù)據(jù)表示 486
17.1 研究數(shù)據(jù)表示 486
17.2 從數(shù)組到鏈表 488
17.2.1 使用鏈表 491
17.2.2 反思 493
17.3 抽象數(shù)據(jù)類型(ADT) 494
17.3.1 建立抽象 494
17.3.2 建立接口 495
17.3.3 使用接口 498
17.3.4 實(shí)現(xiàn)接口 500
17.4 隊(duì)列ADT 505
17.4.1 定義隊(duì)列抽象數(shù)據(jù)類型 505
17.4.2 定義一個(gè)接口 505
17.4.3 實(shí)現(xiàn)接口數(shù)據(jù)表示 506
17.4.4 測(cè)試隊(duì)列 512
17.5 用隊(duì)列進(jìn)行模擬 514
17.6 鏈表和數(shù)組 518
17.7 二叉查找樹 521
17.7.1 二叉樹ADT 522
17.7.2 二叉查找樹接口 522
17.7.3 二叉樹的實(shí)現(xiàn) 524
17.7.4 使用二叉樹 535
17.7.5 樹的思想 538
17.8 其他說明 539
17.9 關(guān)鍵概念 540
17.10 本章小結(jié) 540
17.11 復(fù)習(xí)題 540
17.12 編程練習(xí) 541