關(guān)于我們
書單推薦
新書推薦
|
C Primer Plus 第6版 英文版 上下冊
《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庫和高級數(shù)據(jù)表示。本書以完整的程序?yàn)槔v解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)典教程
針對C11標(biāo)準(zhǔn)進(jìn)行全面更新
上一版累計(jì)銷量逾22萬冊
C語言領(lǐng)域的作品
本書是一本經(jīng)過仔細(xì)測試、精心設(shè)計(jì)的完整C語言教程,它涵蓋了C語言編程中的核心內(nèi)容。本書作為計(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ā)人員閱讀。
本書在之前版本的基礎(chǔ)之上進(jìn)行了全新升級,它涵蓋了C語言新的進(jìn)展以及C11標(biāo)準(zhǔn)的詳細(xì)內(nèi)容。本書還提供了大量深度與廣度齊備的教學(xué)技術(shù)和工具,來提高你的學(xué)習(xí)。
本書包含如下內(nèi)容:
詳細(xì)完整地討論了C語言的基礎(chǔ)特性和附加特性;
清晰解釋了使用C語言不同部分的時(shí)機(jī),以及原因;
通過簡潔、簡單的示例加強(qiáng)讀者的動(dòng)手練習(xí),以幫助一次理解一兩個(gè)概念;
囊括了數(shù)百個(gè)實(shí)用的代碼示例;
每章末尾的復(fù)習(xí)題和編程練習(xí)可以檢測你的理解情況。
涵蓋了C泛型編程,以提供大的靈活性。
Stephen Prata,在美國加州肯特菲爾得的馬林學(xué)院教授天文、物理和計(jì)算機(jī)科學(xué)。他畢業(yè)于加州理工學(xué)院,在美國加州大學(xué)伯克利分校獲得博士學(xué)位。他單獨(dú)編寫以及與他人合作編寫的編程圖書有十多本,其中包括C++Primer Plus和C Primer Plus,而且后者獲得了計(jì)算機(jī)出版協(xié)會(huì)1990年度How—to計(jì)算機(jī)圖書獎(jiǎng)。
1 Getting Ready 1
第1章 初識(shí)C語言 Whence C? / C語言的起源 1 Why C? / 選擇C語言的理由 2 Design Features / 設(shè)計(jì)特性 2 Efficiency / 高效性 3 Portability / 可移植性 3 Power and Flexibility / 強(qiáng)大而靈活 3 Programmer Oriented / 面向程序員 3 Shortcomings / 缺點(diǎn) 4 Whither C? / C語言的應(yīng)用范圍 4 What Computers Do / 計(jì)算機(jī)能做什么 5 High-level Computer Languages and Compilers / 高級計(jì)算機(jī)語言和編譯器 6 Language Standards / 語言標(biāo)準(zhǔn) 7 The First ANSI/ISO C Standard / 第1個(gè)ANSI/ISO C標(biāo)準(zhǔn) 8 The C99 Standard / C99標(biāo)準(zhǔn) 8 The C11 Standard / C11標(biāo)準(zhǔn) 9 Using C: Seven Steps / 使用C語言的幾個(gè)步驟 9 Step 1: Define the Program Objectives / 第1步:定義程序的目標(biāo) 10 Step 2: Design the Program / 第2步:設(shè)計(jì)程序 10 Step 3: Write the Code / 第3步:編寫代碼 11 Step 4: Compile / 第4步:編譯 11 Step 5: Run the Program / 第5步:運(yùn)行程序 12 Step 6: Test and Debug the Program / 第6步:測試和調(diào)試程序 12 Step 7: Maintain and Modify the Program / 第7步:維護(hù)和修改代碼 13 Commentary / 說明 13 Programming Mechanics / 編程機(jī)制 13 Object Code Files, Executable Files, and Libraries / 目標(biāo)代碼文件、可執(zhí)行文件和庫 14 Unix System / Unix系統(tǒng) 16 The GNU Compiler Collection and the LLVM Project / GNU編譯器集合和LLVM項(xiàng)目 18 Linux Systems / Linux系統(tǒng) 18 Command-Line Compilers for the PC / PC的命令行編譯器 19 Integrated Development Environments (Windows) / 集成開發(fā)環(huán)境(Windows) 19 The Windows/Linux Option / Windows/Linux 21 C on the Macintosh / Macintosh中的C 21 How This Book Is Organized / 本書的組織結(jié)構(gòu) 22 Conventions Used in This Book / 本書的約定 22 Typeface / 字體 22 Program Output / 程序輸出 23 Special Elements / 特殊元素 24 Summary / 本章小結(jié) 24 Review Questions / 復(fù)習(xí)題 25 Programming Exercise / 編程練習(xí) 25 2 Introducing C 27 第2章 C語言概述 A Simple Example of C / 簡單的C程序示例 27 The Example Explained / 示例解釋 28 Pass 1: Quick Synopsis / 第1遍:快速概要 30 Pass 2: Program Details / 第2遍:程序細(xì)節(jié) 31 The Structure of a Simple Program / 簡單程序的結(jié)構(gòu) 40 Tips on Making Your Programs Readable / 提高程序可讀性的技巧 41 Taking Another Step in Using C / 進(jìn)一步使用C 42 Documentation / 程序說明 43 Multiple Declarations / 多條聲明 43 Multiplication / 乘法 43 Printing Multiple Values / 打印多個(gè)值 43 While You’re at It—Multiple Functions / 多個(gè)函數(shù) 44 Introducing Debugging / 調(diào)試程序 46 Syntax Errors / 語法錯(cuò)誤 46 Semantic Errors / 語義錯(cuò)誤 47 Program State / 程序狀態(tài) 49 Keywords and Reserved Identifiers / 關(guān)鍵字和保留標(biāo)識(shí)符 49 Key Concepts / 關(guān)鍵概念 50 Summary / 本章小結(jié) 51 Review Questions / 復(fù)習(xí)題 51 Programming Exercises / 編程練習(xí) 53 3 Data and C 55 第3章 數(shù)據(jù)和C A Sample Program / 示例程序 55 What’s New in This Program? / 程序中的新元素 57 Data Variables and Constants / 變量與常量數(shù)據(jù) 59 Data: Data-Type Keywords / 數(shù)據(jù):數(shù)據(jù)類型關(guān)鍵字 59 Integer Versus Floating-Point Types / 整數(shù)和浮點(diǎn)數(shù) 60 The Integer / 整數(shù) 61 The Floating-Point Number / 浮點(diǎn)數(shù) 61 Basic C Data Types / C語言基本數(shù)據(jù)類型 62 The int Type / int類型 62 Other Integer Types / 其他整數(shù)類型 66 Using Characters: Type char / 使用字符:char類型 71 The _Bool Type / _Bool類型 77 Portable Types: stdint.h and inttypes.h / 可移植類型:stdint.h和inttypes.h 77 Types float, double, and long double / float、double和long double 79 Complex and Imaginary Types / 復(fù)數(shù)和虛數(shù)類型 85 Beyond the Basic Types / 其他類型 85 Type Sizes / 類型大小 87 Using Data Types / 使用數(shù)據(jù)類型 88 Arguments and Pitfalls / 參數(shù)和陷阱 89 One More Example: Escape Sequences / 轉(zhuǎn)義序列示例 91 What Happens When the Program Runs / 程序運(yùn)行情況 91 Flushing the Output / 刷新輸出 92 Key Concepts / 關(guān)鍵概念 93 Summary / 本章小結(jié) 93 Review Questions / 復(fù)習(xí)題 94 Programming Exercises / 編程練習(xí) 97 4 Character Strings and Formatted Input/Output 99 第4章 字符串和格式化輸入/輸出 Introductory Program / 前導(dǎo)程序 99 Character Strings: An Introduction / 字符串簡介 101 Type char Arrays and the Null Character / char類型數(shù)組和null字符 101 Using Strings / 使用字符串 102 The strlen() Function / strlen()函數(shù) 103 Constants and the C Preprocessor / 常量和C預(yù)處理器 106 The const Modifier / const限定符 109 Manifest Constants on the Job / 明示常量 109 Exploring and Exploiting printf() and scanf() / printf()和scanf() 112 The printf() Function / printf()函數(shù) 112 Using printf() / 使用printf() 113 Conversion Specification Modifiers for printf() / printf()的轉(zhuǎn)換說明修飾符 115 What Does a Conversion Specification Convert? / 轉(zhuǎn)換說明的意義 122 Using scanf() / 使用scanf() 128 The * Modifier with printf() and scanf() / printf()和scanf()的*修飾符 133 Usage Tips for printf() / printf()的用法提示 135 Key Concepts / 關(guān)鍵概念 136 Summary / 本章小結(jié) 137 Review Questions / 復(fù)習(xí)題 138 Programming Exercises / 編程練習(xí) 140 5 Operators, Expressions, and Statements 143 第5章 運(yùn)算符、表達(dá)式和語句 Introducing Loops / 循環(huán)簡介 144 Fundamental Operators / 基本運(yùn)算符 146 Assignment Operator: = / 賦值運(yùn)算符:= 146 Addition Operator: + / 加法運(yùn)算符:+ 149 Subtraction Operator: - / 減法運(yùn)算符:- 149 Sign Operators: - and + / 符號(hào)運(yùn)算符:-和+ 150 Multiplication Operator: * / 乘法運(yùn)算符:* 151 Division Operator: / / 除法運(yùn)算符:/ 153 Operator Precedence / 運(yùn)算符優(yōu)先級 154 Precedence and the Order of Evaluation / 優(yōu)先級和求值順序 156 Some Additional Operators / 其他運(yùn)算符 157 The sizeof Operator and the size_t Type / sizeof運(yùn)算符和size_t類型 158 Modulus Operator: % / 求模運(yùn)算符:% 159 Increment and Decrement Operators: ++ and -- / 遞增和遞減運(yùn)算符:++和-- 160 Decrementing: -- / 遞減運(yùn)算符:-- 164 Precedence / 優(yōu)先級 165 Don’t Be Too Clever / 不要自作聰明 166 Expressions and Statements / 表達(dá)式和語句 167 Expressions / 表達(dá)式 167 Statements / 語句 168 Compound Statements (Blocks) / 復(fù)合語句(塊) 171 Type Conversions / 類型轉(zhuǎn)換 174 The Cast Operator / 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 176 Function with Arguments / 帶參數(shù)的函數(shù) 177 A Sample Program / 示例程序 180 Key Concepts / 關(guān)鍵概念 182 Summary / 本章小結(jié) 182 Review Questions / 復(fù)習(xí)題 183 Programming Exercises / 編程練習(xí) 187 6 C Control Statements: Looping 189 第6章 C控制語句:循環(huán) Revisiting the while Loop / 再探while循環(huán) 190 Program Comments / 程序注釋 191 C-Style Reading Loop / C風(fēng)格讀取循環(huán) 192 The while Statement / while語句 193 Terminating a while Loop / 終止while循環(huán) 194 When a Loop Terminates / 何時(shí)終止循環(huán) 194 while: An Entry-Condition Loop / while:入口條件循環(huán) 195 Syntax Points / 語法要點(diǎn) 195 Which Is Bigger: Using Relational Operators and Expressions / 用關(guān)系運(yùn)算符和表達(dá)式比較大小 197 What Is Truth? / 什么是真 199 What Else Is True? / 其他真值 200 Troubles with Truth / 真值的問題 201 The New _Bool Type / 新的_Bool類型 203 Precedence of Relational Operators / 優(yōu)先級和關(guān)系運(yùn)算符 205 Indefinite Loops and Counting Loops / 不確定循環(huán)和計(jì)數(shù)循環(huán) 207 The for Loop / for循環(huán) 208 Using for for Flexibility / 利用for的靈活性 210 More Assignment Operators: +=, -=, *=, /=, %= / 其他賦值運(yùn)算符:+=、-=、*=、/=、%= 215 The Comma Operator / 逗號(hào)運(yùn)算符 215 Zeno Meets the for Loop / 當(dāng)Zeno遇到for循環(huán) 218 An Exit-Condition Loop: do while / 出口條件循環(huán):do while 220 Which Loop? / 如何選擇循環(huán) 223 Nested Loops / 嵌套循環(huán) 224 Program Discussion / 程序分析 225 A Nested Variation / 嵌套變式 225 Introducing Arrays / 數(shù)組簡介 226 Using a for Loop with an Array / 在for循環(huán)中使用數(shù)組 228 A Loop Example Using a Function Return Value / 使用函數(shù)返回值的循環(huán)示例 230 Program Discussion / 程序分析 232 Using Functions with Return Values / 使用帶返回值的函數(shù) 233 Key Concepts / 關(guān)鍵概念 234 Summary / 本章小結(jié) 235 Review Questions / 復(fù)習(xí)題 236 Programming Exercises / 編程練習(xí) 241 7 C Control Statements: Branching and Jumps 245 第7章 C控制語句:分支和跳轉(zhuǎn) The if Statement / if語句 246 Adding else to the if Statement / if else語句 248 Another Example: Introducing getchar() and putchar() / 另一個(gè)示例:介紹getchar()和putchar() 250 The ctype.h Family of Character Functions / ctype.h系列的字符函數(shù) 252 Multiple Choice else if / 多重選擇else if 254 Pairing else with if / else與if配對 257 More Nested ifs / 多層嵌套的if語句 259 Let’s Get Logical / 邏輯運(yùn)算符 263 Alternate Spellings: The iso646.h Header File / 備選拼寫:iso646.h頭文件 265 Precedence / 優(yōu)先級 265 Order of Evaluation / 求值順序 266 Ranges / 范圍 267 A Word-Count Program / 一個(gè)統(tǒng)計(jì)單詞的程序 268 The Conditional Operator: ?: / 條件運(yùn)算符:?: 271 Loop Aids: continue and break / 循環(huán)輔助:continue和break 274 The continue Statement / continue語句 274 The break Statement / break語句 277 Multiple Choice: switch and break / 多重選擇:switch和break 280 Using the switch Statement / switch語句 281 Reading Only the First Character of a Line / 只讀每行的首字符 283 Multiple Labels / 多重標(biāo)簽 284 switch and if else / switch和if else 286 The goto Statement / goto語句 287 Avoiding goto / 避免使用goto 287 Key Concepts / 關(guān)鍵概念 291 Summary / 本章小結(jié) 291 Review Questions / 復(fù)習(xí)題 292 Programming Exercises / 編程練習(xí) 296 8 Character Input/Output and Input Validation 299 第8章 字符輸入/輸出和輸入驗(yàn)證 Single-Character I/O: getchar() and putchar() / 單字符I/O:getchar()和putchar() 300 Buffers / 緩沖區(qū) 301 Terminating Keyboard Input / 結(jié)束鍵盤輸入 302 Files, Streams, and Keyboard Input / 文件、流和鍵盤輸入 303 The End of File / 文件結(jié)尾 304 Redirection and Files / 重定向和文件 307 Unix, Linux, and Windows Command Prompt Redirection / Unix、Linux和DOS重定向 307 Creating a Friendlier User Interface / 創(chuàng)建更友好的用戶界面 312 Working with Buffered Input / 使用緩沖輸入 312 Mixing Numeric and Character Input / 混合數(shù)值和字符輸入 314 Input Validation / 輸入驗(yàn)證 317 Analyzing the Program / 分析程序 322 The Input Stream and Numbers / 輸入流和數(shù)字 323 Menu Browsing / 菜單瀏覽 324 Tasks / 任務(wù) 324 Toward a Smoother Execution / 使執(zhí)行更順利 325 Mixing Character and Numeric Input / 混合字符和數(shù)值輸入 327 Key Concepts / 關(guān)鍵概念 330 Summary / 本章小結(jié) 331 Review Questions / 復(fù)習(xí)題 331 Programming Exercises / 編程練習(xí) 332 9 Functions 335 第9章 函數(shù) Reviewing Functions / 復(fù)習(xí)函數(shù) 335 Creating and Using a Simple Function / 創(chuàng)建并使用簡單函數(shù) 337 Analyzing the Program / 分析程序 338 Function Arguments / 函數(shù)參數(shù) 340 Defining a Function with an Argument: Formal Parameters / 定義帶形式參數(shù)的函數(shù) 342 Prototyping a Function with Arguments / 聲明帶形式參數(shù)函數(shù)的原型 343 Calling a Function with an Argument: Actual Arguments / 調(diào)用帶實(shí)際參數(shù)的函數(shù) 343 The Black-Box Viewpoint / 黑盒視角 345 Returning a Value from a Function with return / 使用return從函數(shù)中返回值 345 Function Types / 函數(shù)類型 348 ANSI C Function Prototyping / ANSI C函數(shù)原型 349 The Problem / 問題所在 350 The ANSI C Solution / ANSI的解決方案 351 No Arguments and Unspecified Arguments / 無參數(shù)和未指定參數(shù) 352 Hooray for Prototypes / 函數(shù)原型的優(yōu)點(diǎn) 353 Recursion / 遞歸 353 Recursion Revealed / 演示遞歸 354 Recursion Fundamentals / 遞歸的基本原理 355 Tail Recursion / 尾遞歸 356 Recursion and Reversal / 遞歸和倒序計(jì)算 358 Recursion Pros and Cons / 遞歸的優(yōu)缺點(diǎn) 360 Compiling Programs with Two or More Source Code Files / 編譯多源代碼文件的程序 361 Unix / Unix 362 Linux / Linux 362 DOS Command-Line Compilers / DOS命令行編譯器 362 Windows and Apple IDE Compilers / Windows和蘋果的IDE編譯器 362 Using Header Files / 使用頭文件 363 Finding Addresses: The & Operator / 查找地址:&運(yùn)算符 367 Altering Variables in the Calling Function / 更改主調(diào)函數(shù)中的變量 369 Pointers: A First Look / 指針簡介 371 The Indirection Operator: * / 間接運(yùn)算符:* 371 Declaring Pointers / 聲明指針 372 Using Pointers to Communicate Between Functions / 使用指針在函數(shù)間通信 373 Key Concepts / 關(guān)鍵概念 378 Summary / 本章小結(jié) 378 Review Questions / 復(fù)習(xí)題 379 Programming Exercises / 編程練習(xí) 380 10 Arrays and Pointers 383 第10章 數(shù)組和指針 Arrays / 數(shù)組 383 Initialization / 初始化數(shù)組 384 Designated Initializers (C99) / 指定初始化器(C99) 388 Assigning Array Values / 給數(shù)組元素賦值 390 Array Bounds / 數(shù)組邊界 390 Specifying an Array Size / 指定數(shù)組的大小 392 Multidimensional Arrays / 多維數(shù)組 393 Initializing a Two-Dimensional Array / 初始化二維數(shù)組 397 More Dimensions / 其他多維數(shù)組 398 Pointers and Arrays / 指針和數(shù)組 398 Functions, Arrays, and Pointers / 函數(shù)、數(shù)組和指針 401 Using Pointer Parameters / 使用指針形參 404 Comment: Pointers and Arrays / 指針表示法和數(shù)組表示法 407 Pointer Operations / 指針操作 407 Protecting Array Contents / 保護(hù)數(shù)組中的數(shù)據(jù) 412 Using const with Formal Parameters / 對形式參數(shù)使用const 413 More About const / const的其他內(nèi)容 415 Pointers and Multidimensional Arrays / 指針和多維數(shù)組 417 Pointers to Multidimensional Arrays / 指向多維數(shù)組的指針 420 Pointer Compatibility / 指針的兼容性 421 Functions and Multidimensional Arrays / 函數(shù)和多維數(shù)組 423 Variable-Length Arrays (VLAs) / 變長數(shù)組(VLA) 427 Compound Literals / 復(fù)合字面量 431 Key Concepts / 關(guān)鍵概念 434 Summary / 本章小結(jié) 435 Review Questions / 復(fù)習(xí)題 436 Programming Exercises / 編程練習(xí) 439 11 Character Strings and String Functions 441 第11章 字符串和字符串函數(shù) Representing Strings and String I/O / 表示字符串和字符串I/O 441 Defining Strings Within a Program / 在程序中定義字符串 442 Pointers and Strings / 指針和字符串 451 String Input / 字符串輸入 453 Creating Space / 分配空間 453 The Unfortunate gets() Function / 不幸的gets()函數(shù) 453 The Alternatives to gets() / gets()的替代品 455 The scanf() Function / scanf()函數(shù) 462 String Output / 字符串輸出 464 The puts() Function / puts()函數(shù) 464 The fputs() Function / fputs()函數(shù) 465 The printf() Function / printf()函數(shù) 466 The Do-It-Yourself Option / 自定義輸入/輸出函數(shù) 466 String Functions / 字符串函數(shù) 469 The strlen() Function / strlen()函數(shù) 469 The strcat() Function / strcat()函數(shù) 471 The strncat() Function / strncat()函數(shù) 473 The strcmp() Function / strcmp()函數(shù) 475 The strcpy() and strncpy() Functions / strcpy()和strncpy()函數(shù) 482 The sprintf() Function / sprintf()函數(shù) 487 Other String Functions / 其他字符串函數(shù) 489 A String Example: Sorting Strings / 字符串示例:字符串排序 491 Sorting Pointers Instead of Strings / 排序指針而非字符串 493 The Selection Sort Algorithm / 選擇排序算法 494 The ctype.h Character Functions and Strings / ctype.h字符函數(shù)和字符串 495 Command-Line Arguments / 命令行參數(shù) 497 Command-Line Arguments in Integrated Environments / 集成環(huán)境中的命令行參數(shù) 500 Command-Line Arguments with the Macintosh / Macintosh中的命令行參數(shù) 500 String-to-Number Conversions / 把字符串轉(zhuǎn)換為數(shù)字 500 Key Concepts / 關(guān)鍵概念 504 Summary / 本章小結(jié) 504 Review Questions / 復(fù)習(xí)題 505 Programming Exercises / 編程練習(xí) 508 12 Storage Classes, Linkage, and Memory Management 511 第12章 存儲(chǔ)類別、鏈接和內(nèi)存管理 Storage Classes / 存儲(chǔ)類別 511 Scope / 作用域 513 Linkage / 鏈接 515 Storage Duration / 存儲(chǔ)期 516 Automatic Variables / 自動(dòng)變量 518 Register Variables / 寄存器變量 522 Static Variables with Block Scope / 塊作用域的靜態(tài)變量 522 Static Variables with External Linkage / 外部鏈接的靜態(tài)變量 524 Static Variables with Internal Linkage / 內(nèi)部鏈接的靜態(tài)變量 529 Multiple Files / 多文件 530 Storage-Class Specifier Roundup / 存儲(chǔ)類別說明符 530 Storage Classes and Functions / 存儲(chǔ)類別和函數(shù) 533 Which Storage Class? / 存儲(chǔ)類別的選擇 534 A Random-Number Function and a Static Variable / 隨機(jī)數(shù)函數(shù)和靜態(tài)變量 534 Roll’Em / 擲骰子 538 Allocated Memory: malloc() and free() / 分配內(nèi)存:malloc()和free() 543 The Importance of free() / free()的重要性 547 The calloc() Function / calloc()函數(shù) 548 Dynamic Memory Allocation and Variable-Length Arrays / 動(dòng)態(tài)內(nèi)存分配和變長數(shù)組 548 Storage Classes and Dynamic Memory Allocation / 存儲(chǔ)類別和動(dòng)態(tài)內(nèi)存分配 549 ANSI C Type Qualifiers / ANSI C類型限定符 551 The const Type Qualifier / const類型限定符 552 The volatile Type Qualifier / volatile類型限定符 554 The restrict Type Qualifier / restrict類型限定符 555 The _Atomic Type Qualifier (C11) / _Atomic類型限定符(C11) 556 New Places for Old Keywords / 舊關(guān)鍵字的新位置 557 Key Concepts / 關(guān)鍵概念 558 Summary / 本章小結(jié) 558 Review Questions / 復(fù)習(xí)題 559 Programming Exercises / 編程練習(xí) 561 13 File Input/Output 565 第13章 文件輸入/輸出 Communicating with Files / 與文件進(jìn)行通信 565 What Is a File? / 文件是什么 566 The Text Mode and the Binary Mode / 文本模式和二進(jìn)制模式 566 Levels of I/O / I/O的級別 568 Standard Files / 標(biāo)準(zhǔn)文件 568 Standard I/O / 標(biāo)準(zhǔn)I/O 568 Checking for Command-Line Arguments / 檢查命令行參數(shù) 569 The fopen() Function / fopen()函數(shù) 570 The getc() and putc() Functions / getc()和putc()函數(shù) 572 End-of-File / 文件結(jié)尾 572 The fclose() Function / fclose()函數(shù) 574 Pointers to the Standard Files / 指向標(biāo)準(zhǔn)文件的指針 574 A Simple-Minded File-Condensing Program / 一個(gè)簡單的文件壓縮程序 574 File I/O: fprintf(), fscanf(), fgets(), and fputs() / 文件I/O:fprintf()、fscanf()、fgets()和fputs() 576 The fprintf() and fscanf() Functions / fprintf()和fscanf()函數(shù) 576 The fgets() and fputs() Functions / fgets()和fputs()函數(shù) 578 Adventures in Random Access: fseek() and ftell() / 隨機(jī)訪問:fseek()和ftell() 579 How fseek() and ftell() Work / fseek()和ftell()的工作原理 580 Binary Versus Text Mode / 二進(jìn)制模式和文本模式 582 Portability / 可移植性 582 The fgetpos() and fsetpos() Functions / fgetpos()和fsetpos()函數(shù) 583 Behind the Scenes with Standard I/O / 標(biāo)準(zhǔn)I/O的機(jī)理 583 Other Standard I/O Functions / 其他標(biāo)準(zhǔn)I/O函數(shù) 584 The int ungetc(int c, FILE *fp) Function / int ungetc(int c, FILE *fp)函數(shù) 585 The int fflush() Function / int fflush()函數(shù) 585 The int setvbuf() Function / int setvbuf()函數(shù) 585 Binary I/O: fread() and fwrite() / 二進(jìn)制I/O:fread()和fwrite() 586 The size_t fwrite() Function / size_t fwrite()函數(shù) 588 The size_t fread() Function / size_t fread()函數(shù) 588 The int feof(FILE *fp) and int ferror(FILE *fp) Functions / int feof(FILE *fp)和int ferror(FILE *fp)函數(shù) 589 An fread() and fwrite() Example / 一個(gè)程序示例 589 Random Access with Binary I/O / 用二進(jìn)制I/O進(jìn)行隨機(jī)訪問 593 Key Concepts / 關(guān)鍵概念 594 Summary / 本章小結(jié) 595 Review Questions / 復(fù)習(xí)題 596 Programming Exercises / 編程練習(xí) 598 14 Structures and Other Data Forms 601 第14章 結(jié)構(gòu)和其他數(shù)據(jù)形式 Sample Problem: Creating an Inventory of Books / 示例問題:創(chuàng)建圖書目錄 601 Setting Up the Structure Declaration / 建立結(jié)構(gòu)聲明 604 Defining a Structure Variable / 定義結(jié)構(gòu)變量 604 Initializing a Structure / 初始化結(jié)構(gòu) 606 Gaining Access to Structure Members / 訪問結(jié)構(gòu)成員 607 Initializers for Structures / 結(jié)構(gòu)的初始化器 607 Arrays of Structures / 結(jié)構(gòu)數(shù)組 608 Declaring an Array of Structures / 聲明結(jié)構(gòu)數(shù)組 611 Identifying Members of an Array of Structures / 標(biāo)識(shí)結(jié)構(gòu)數(shù)組的成員 612 Program Discussion / 程序討論 612 Nested Structures / 嵌套結(jié)構(gòu) 613 Pointers to Structures / 指向結(jié)構(gòu)的指針 615 Declaring and Initializing a Structure Pointer / 聲明和初始化結(jié)構(gòu)指針 617 Member Access by Pointer / 用指針訪問成員 617 Telling Functions About Structures / 向函數(shù)傳遞結(jié)構(gòu)的信息 618 Passing Structure Members / 傳遞結(jié)構(gòu)成員 618 Using the Structure Address / 傳遞結(jié)構(gòu)的地址 619 Passing a Structure as an Argument / 傳遞結(jié)構(gòu) 621 More on Structure Features / 其他結(jié)構(gòu)特性 622 Structures or Pointer to Structures? / 結(jié)構(gòu)和結(jié)構(gòu)指針的選擇 626 Character Arrays or Character Pointers in a Structure / 結(jié)構(gòu)中的字符數(shù)組和字符指針 627 Structure, Pointers, and malloc() / 結(jié)構(gòu)、指針和malloc() 628 Compound Literals and Structures (C99) / 復(fù)合字面量和結(jié)構(gòu)(C99) 631 Flexible Array Members (C99) / 伸縮型數(shù)組成員(C99) 633 Anonymous Structures (C11) / 匿名結(jié)構(gòu)(C11) 636 Functions Using an Array of Structures / 使用結(jié)構(gòu)數(shù)組的函數(shù) 637 Saving the Structure Contents in a File / 把結(jié)構(gòu)內(nèi)容保存到文件中 639 A Structure-Saving Example / 保存結(jié)構(gòu)的程序示例 640 Program Points / 程序要點(diǎn) 643 Structures: What Next? / 鏈?zhǔn)浇Y(jié)構(gòu) 644 Unions: A Quick Look / 聯(lián)合簡介 645 Using Unions / 使用聯(lián)合 646 Anonymous Unions (C11) / 匿名聯(lián)合(C11) 647 Enumerated Types / 枚舉類型 649 enum Constants / enum常量 649 Default Values / 默認(rèn)值 650 Assigned Values / 賦值 650 enum Usage / enum的用法 650 Shared Namespaces / 共享名稱空間 652 typedef: A Quick Look / typedef簡介 653 Fancy Declarations / 其他復(fù)雜的聲明 655 Functions and Pointers / 函數(shù)和指針 657 Key Concepts / 關(guān)鍵概念 665 Summary / 本章小結(jié) 665 Review Questions / 復(fù)習(xí)題 666 Programming Exercises / 編程練習(xí) 669 15 Bit Fiddling 673 第15章 位操作 Binary Numbers, Bits, and Bytes / 二進(jìn)制數(shù)、位和字節(jié) 674 Binary Integers / 二進(jìn)制整數(shù) 674 Signed Integers / 有符號(hào)整數(shù) 675 Binary Floating Point / 二進(jìn)制浮點(diǎn)數(shù) 676 Other Number Bases / 其他進(jìn)制數(shù) 676 Octal / 八進(jìn)制 677 Hexadecimal / 十六進(jìn)制 677 C’s Bitwise Operators / C按位運(yùn)算符 678 Bitwise Logical Operators / 按位邏輯運(yùn)算符 678 Usage: Masks / 用法:掩碼 680 Usage: Turning Bits On (Setting Bits) / 用法:打開位(設(shè)置位) 681 Usage: Turning Bits Off (Clearing Bits) / 用法:關(guān)閉位(清空位) 682 Usage: Toggling Bits / 用法:切換位 683 Usage: Checking the Value of a Bit / 用法:檢查位的值 683 Bitwise Shift Operators / 移位運(yùn)算符 684 Programming Example / 編程示例 685 Another Example / 另一個(gè)例子 688 Bit Fields / 位字段 690 Bit-Field Example / 位字段示例 692 Bit Fields and Bitwise Operators / 位字段和按位運(yùn)算符 696 Alignment Features (C11) / 對齊特性(C11) 703 Key Concepts / 關(guān)鍵概念 705 Summary / 本章小結(jié) 706 Review Questions / 復(fù)習(xí)題 706 Programming Exercises / 編程練習(xí) 708 16 The C Preprocessor and the C Library 711 第16章 C預(yù)處理器和C庫 First Steps in Translating a Program / 翻譯程序的第一步 712 Manifest Constants: #define / 明示常量:#define 713 Tokens / 記號(hào) 717 Redefining Constants / 重定義常量 717 Using Arguments with #define / 在#define中使用參數(shù) 718 Creating Strings from Macro Arguments: The # Operator / 用宏參數(shù)創(chuàng)建字符串:#運(yùn)算符 721 Preprocessor Glue: The ## Operator / 預(yù)處理器粘合劑:##運(yùn)算符 722 Variadic Macros: ... and _ _VA_ARGS_ _ / 變參宏:...和_ _VA_ARGS_ _ 723 Macro or Function? / 宏和函數(shù)的選擇 725 File Inclusion: #include / 文件包含:#include 726 Header Files: An Example / 頭文件示例 727 Uses for Header Files / 使用頭文件 729 Other Directives / 其他指令 730 The #undef Directive / #undef指令 731 Being Defined—The C Preprocessor Perspective / 從C預(yù)處理器角度看已定義 731 Conditional Compilation / 條件編譯 731 Predefined Macros / 預(yù)定義宏 737 #line and #error / #line和#error 738 #pragma / #pragma 739 Generic Selection (C11) / 泛型選擇(C11) 740 Inline Functions (C99) / 內(nèi)聯(lián)函數(shù)(C99) 741 _Noreturn Functions (C11) / _Noreturn函數(shù)(C11) 744 The C Library / C庫 744 Gaining Access to the C Library / 訪問C庫 745 Using the Library Descriptions / 使用庫描述 746 The Math Library / 數(shù)學(xué)庫 747 A Little Trigonometry / 三角問題 748 Type Variants / 類型變體 750 The tgmath.h Library (C99) / tgmath.h庫(C99) 752 The General Utilities Library / 通用工具庫 753 The exit() and atexit() Functions / exit()和atexit()函數(shù) 753 The qsort() Function / qsort()函數(shù) 755 The Assert Library / 斷言庫 760 Using assert / assert的用法 760 _Static_assert (C11) / _Static_assert(C11) 762 memcpy() and memmove() from the string.h Library / string.h庫中的memcpy()和memmove() 763 Variable Arguments: stdarg.h / 可變參數(shù):stdarg.h 765 Key Concepts / 關(guān)鍵概念 768 Summary / 本章小結(jié) 768 Review Questions / 復(fù)習(xí)題 768 Programming Exercises / 編程練習(xí) 770 17 Advanced Data Representation 773 第17章 高級數(shù)據(jù)表示 Exploring Data Representation / 研究數(shù)據(jù)表示 774 Beyond the Array to the Linked List / 從數(shù)組到鏈表 777 Using a Linked List / 使用鏈表 781 Afterthoughts / 反思 786 Abstract Data Types (ADTs) / 抽象數(shù)據(jù)類型(ADT) 786 Getting Abstract / 建立抽象 788 Building an Interface / 建立接口 789 Using the Interface / 使用接口 793 Implementing the Interface / 實(shí)現(xiàn)接口 796 Getting Queued with an ADT / 隊(duì)列ADT 804 Defining the Queue Abstract Data Type / 定義隊(duì)列抽象數(shù)據(jù)類型 804 Defining an Interface / 定義一個(gè)接口 805 Implementing the Interface Data Representation / 實(shí)現(xiàn)接口數(shù)據(jù)表示 806 Testing the Queue / 測試隊(duì)列 815 Simulating with a Queue / 用隊(duì)列進(jìn)行模擬 818 The Linked List Versus the Array / 鏈表和數(shù)組 824 Binary Search Trees / 二叉查找樹 828 A Binary Tree ADT / 二叉樹ADT 829 The Binary Search Tree Interface / 二叉查找樹接口 830 The Binary Tree Implementation / 二叉樹的實(shí)現(xiàn) 833 Trying the Tree / 使用二叉樹 849 Tree Thoughts / 樹的思想 854 Other Directions / 其他說明 856 Key Concepts / 關(guān)鍵概念 856 Summary / 本章小結(jié) 857 Review Questions / 復(fù)習(xí)題 857 Programming Exercises / 編程練習(xí) 858 A Answers to the Review Questions 861 附錄A 復(fù)習(xí)題答案 Answers to Review Questions for Chapter 1 / 第1章復(fù)習(xí)題答案 861 Answers to Review Questions for Chapter 2 / 第2章復(fù)習(xí)題答案 862 Answers to Review Questions for Chapter 3 / 第3章復(fù)習(xí)題答案 863 Answers to Review Questions for Chapter 4 / 第4章復(fù)習(xí)題答案 866 Answers to Review Questions for Chapter 5 / 第5章復(fù)習(xí)題答案 869 Answers to Review Questions for Chapter 6 / 第6章復(fù)習(xí)題答案 872 Answers to Review Questions for Chapter 7 / 第7章復(fù)習(xí)題答案 876 Answers to Review Questions for Chapter 8 / 第8章復(fù)習(xí)題答案 879 Answers to Review Questions for Chapter 9 / 第9章復(fù)習(xí)題答案 881 Answers to Review Questions for Chapter 10 / 第10章復(fù)習(xí)題答案 883 Answers to Review Questions for Chapter 11 / 第11章復(fù)習(xí)題答案 886 Answers to Review Questions for Chapter 12 / 第12章復(fù)習(xí)題答案 890 Answers to Review Questions for Chapter 13 / 第13章復(fù)習(xí)題答案 891 Answers to Review Questions for Chapter 14 / 第14章復(fù)習(xí)題答案 894 Answers to Review Questions for Chapter 15 / 第15章復(fù)習(xí)題答案 898 Answers to Review Questions for Chapter 16 / 第16章復(fù)習(xí)題答案 899 Answers to Review Questions for Chapter 17 / 第17章復(fù)習(xí)題答案 901 B Reference Section 905 附錄B 參考資料 Section Ⅰ: Additional Reading / 參考資料Ⅰ:補(bǔ)充閱讀 905 Online Resources / 在線資源 905 C Language Books / C語言書籍 907 Programming Books / 編程書籍 907 Reference Books / 參考書籍 908 C++ Books / C++書籍 908 Section Ⅱ: C Operators / 參考資料Ⅱ:C運(yùn)算符 908 Arithmetic Operators / 算術(shù)運(yùn)算符 909 Relational Operators / 關(guān)系運(yùn)算符 910 Assignment Operators / 賦值運(yùn)算符 910 Logical Operators / 邏輯運(yùn)算符 911 The Conditional Operator / 條件運(yùn)算符 911 Pointer-Related Operators / 與指針有關(guān)的運(yùn)算符 912 Sign Operators / 符號(hào)運(yùn)算符 912 Structure and Union Operators / 結(jié)構(gòu)和聯(lián)合運(yùn)算符 912 Bitwise Operators / 按位運(yùn)算符 913 Miscellaneous Operators / 混合運(yùn)算符 914 Section Ⅲ: Basic Types and Storage Classes / 參考資料Ⅲ:基本類型和存儲(chǔ)類別 915 Summary: The Basic Data Types / 總結(jié):基本數(shù)據(jù)類型 915 Summary: How to Declare a Simple Variable / 總結(jié):如何聲明一個(gè)簡單變量 917 Summary: Qualifiers / 總結(jié):限定符 919 Section Ⅳ: Expressions, Statements, and Program Flow / 參考資料Ⅳ:表達(dá)式、語句和程序流 920 Summary: Expressions and Statements / 總結(jié):表達(dá)式和語句 920 Summary: The while Statement / 總結(jié):while語句 921 Summary: The for Statement / 總結(jié):for語句 921 Summary: The do while Statement / 總結(jié):do while語句 922 Summary: Using if Statements for Making Choices / 總結(jié):if語句 923 Summary: Multiple Choice with switch / 帶多重選擇的switch語句 924 Summary: Program Jumps / 總結(jié):程序跳轉(zhuǎn) 925 Section Ⅴ: The Standard ANSI C Library with C99 and C11 Additions / 參考資料Ⅴ:新增C99和C11的ANSI C庫 926 Diagnostics: assert.h / 斷言:assert.h 926 Complex Numbers: complex.h (C99) / 復(fù)數(shù):complex.h(C99) 927 Character Handling: ctype.h / 字符處理:ctype.h 929 Error Reporting: errno.h / 錯(cuò)誤報(bào)告:errno.h 930 Floating-Point Environment: fenv.h (C99) / 浮點(diǎn)環(huán)境:fenv.h(C99) 930 Floating-point Characteristics: float.h / 浮點(diǎn)特性:float.h 933 Format Conversion of Integer Types: inttypes.h (C99) / 整數(shù)類型的格式轉(zhuǎn)換:inttypes.h 935 Alternative Spellings: iso646.h / 可選拼寫:iso646.h 936 Localization: locale.h / 本地化:locale.h 936 Math Library: math.h / 數(shù)學(xué)庫:math.h 939 Non-Local Jumps: setjmp.h / 非本地跳轉(zhuǎn):setjmp.h 945 Signal Handling: signal.h / 信號(hào)處理:signal.h 945 Alignment: stdalign.h (C11) / 對齊:stdalign.h(C11) 946 Variable Arguments: stdarg.h / 可變參數(shù):stdarg.h 947 Atomics Support: stdatomic.h (C11) / 原子支持:stdatomic.h(C11) 948 Boolean Support: stdbool.h (C99) / 布爾支持:stdbool.h(C99) 948 Common Definitions: stddef.h / 通用定義:stddef.h 948 Integer Types: stdint.h / 整數(shù)類型:stdint.h 949 Standard I/O Library: stdio.h / 標(biāo)準(zhǔn)I/O庫:stdio.h 953 General Utilities: stdlib.h / 通用工具:stdlib.h 956 _Noreturn: stdnoreturn.h / _Noreturn:stdnoreturn.h 962 String Handling: string.h / 處理字符串:string.h 962 Type-Generic Math: tgmath.h (C99) / 通用類型數(shù)學(xué):tgmath.h(C99) 965 Threads: threads.h (C11) / 線程:threads.h(C11) 967 Date and Time: time.h / 日期和時(shí)間:time.h 967 Unicode Utilities: uchar.h (C11) / 統(tǒng)一碼工具:uchar.h(C11) 971 Extended Multibyte and Wide-Character Utilities: wchar.h (C99) / 擴(kuò)展的多字節(jié)字符和寬字符工具:wchar.h(C99) 972 Wide Character Classification and Mapping Utilities: wctype.h (C99) / 寬字符分類和映射工具:wctype.h(C99) 978 Section Ⅵ: Extended Integer Types / 參考資料Ⅵ:擴(kuò)展的整數(shù)類型 980 Exact-Width Types / 精確寬度類型 981 Minimum-Width Types / 最小寬度類型 982 Fastest Minimum-Width Types / 最快最小寬度類型 983 Maximum-Width Types / 最大寬度類型 983 Integers That Can Hold Pointer Values / 可儲(chǔ)存指針值的整型 984 Extended Integer Constants / 擴(kuò)展的整型常量 984 Section Ⅶ: Expanded Character Support / 參考資料Ⅶ:擴(kuò)展字符支持 984 Trigraph Sequences / 三字符序列 984 Digraphs / 雙字符 985 Alternative Spellings: iso646.h / 可選拼寫:iso646.h 986 Multibyte Characters / 多字節(jié)字符 986 Universal Character Names (UCNs) / 通用字符名(UCN) 987 Wide Characters / 寬字符 988 Wide Characters and Multibyte Characters / 寬字符和多字節(jié)字符 989 Section Ⅷ: C99/C11 Numeric Computational Enhancements / 參考資料Ⅷ:C99/C11數(shù)值計(jì)算增強(qiáng) 990 The IEC Floating-Point Standard / IEC浮點(diǎn)標(biāo)準(zhǔn) 990 The fenv.h Header File / fenv.h頭文件 994 The STDC FP_CONTRACT Pragma / STDC FP_CONTRACT編譯指示 995 Additions to the math.h Library / math.h庫增補(bǔ) 995 Support for Complex Numbers / 對復(fù)數(shù)的支持 996 Section Ⅸ: Differences Between C and C++ / 參考資料Ⅸ:C和C++的區(qū)別 998 Function Prototypes / 函數(shù)原型 999 char Constants / char常量 1000 The const Modifier / const限定符 1000 Structures and Unions / 結(jié)構(gòu)和聯(lián)合 1001 Enumerations / 枚舉 1002 Pointer-to-void / 指向void的指針 1002 Boolean Types / 布爾類型 1003 Alternative Spellings / 可選拼寫 1003 Wide-Character Support / 寬字符支持 1003 Complex Types / 復(fù)數(shù)類型 1003 Inline Functions / 內(nèi)聯(lián)函數(shù) 1003 C99/11 Features Not Found in C++11 / C++11中沒有的C99/C11特性 1004
你還可能感興趣
我要評論
|