關于我們
書單推薦
新書推薦
|
C Primer Plus 第6版 英文版 上下冊
《C Primer Plus(第6版)英文版》詳細講解了C語言的基本概念和編程技巧。
《C Primer Plus(第6版)英文版》共17章。第1、2章介紹了C語言編程的預備知識。第3~15章詳細講解了C語言的相關知識,包括數(shù)據(jù)類型、格式化輸入/輸出、運算符、表達式、語句、循環(huán)、字符輸入和輸出、函數(shù)、數(shù)組和指針、字符和字符串函數(shù)、內存管理、文件輸入輸出、結構、位操作等。第16章、17章介紹C預處理器、C庫和高級數(shù)據(jù)表示。本書以完整的程序為例,講解C語言的知識要點和注意事項。每章末設計了大量復習題和編程練習,幫助讀者鞏固所學知識和提高實際編程能力。附錄給出了各章復習題的參考答案和豐富的參考資料。
《C Primer Plus(第6版)英文版》可作為C語言的教材,適用于需要系統(tǒng)學習C語言的初學者,也適用于鞏固C語言知識或希望進一步提高編程技術的程序員。
經(jīng)久不衰的C語言暢銷經(jīng)典教程
針對C11標準進行全面更新
上一版累計銷量逾22萬冊
C語言領域的作品
本書是一本經(jīng)過仔細測試、精心設計的完整C語言教程,它涵蓋了C語言編程中的核心內容。本書作為計算機科學的經(jīng)典著作,講解了包含結構化代碼和自頂向下設計在內的程序設計原則。
與以前的版本一樣,作者的目標仍舊是為讀者提供一本入門型、條理清晰、見解深刻的C語言教程。作者把基礎的編程概念與C語言的細節(jié)很好地融合在一起,并通過大量短小精悍的示例同時演示一兩個概念,通過學以致用的方式鼓勵讀者掌握新的主題。
每章末尾的復習題和編程練習題進一步強化了重要的信息,有助于讀者消化那些難以理解的概念。本書采用了友好、易于使用的編排方式,不僅適合打算認真學習C語言編程的學生閱讀,也適合那些精通其他編程語言,但希望更好地掌握C語言這門核心語言的開發(fā)人員閱讀。
本書在之前版本的基礎之上進行了全新升級,它涵蓋了C語言新的進展以及C11標準的詳細內容。本書還提供了大量深度與廣度齊備的教學技術和工具,來提高你的學習。
本書包含如下內容:
詳細完整地討論了C語言的基礎特性和附加特性;
清晰解釋了使用C語言不同部分的時機,以及原因;
通過簡潔、簡單的示例加強讀者的動手練習,以幫助一次理解一兩個概念;
囊括了數(shù)百個實用的代碼示例;
每章末尾的復習題和編程練習可以檢測你的理解情況。
涵蓋了C泛型編程,以提供大的靈活性。
Stephen Prata,在美國加州肯特菲爾得的馬林學院教授天文、物理和計算機科學。他畢業(yè)于加州理工學院,在美國加州大學伯克利分校獲得博士學位。他單獨編寫以及與他人合作編寫的編程圖書有十多本,其中包括C++Primer Plus和C Primer Plus,而且后者獲得了計算機出版協(xié)會1990年度How—to計算機圖書獎。
1 Getting Ready 1
第1章 初識C語言 Whence C? / C語言的起源 1 Why C? / 選擇C語言的理由 2 Design Features / 設計特性 2 Efficiency / 高效性 3 Portability / 可移植性 3 Power and Flexibility / 強大而靈活 3 Programmer Oriented / 面向程序員 3 Shortcomings / 缺點 4 Whither C? / C語言的應用范圍 4 What Computers Do / 計算機能做什么 5 High-level Computer Languages and Compilers / 高級計算機語言和編譯器 6 Language Standards / 語言標準 7 The First ANSI/ISO C Standard / 第1個ANSI/ISO C標準 8 The C99 Standard / C99標準 8 The C11 Standard / C11標準 9 Using C: Seven Steps / 使用C語言的幾個步驟 9 Step 1: Define the Program Objectives / 第1步:定義程序的目標 10 Step 2: Design the Program / 第2步:設計程序 10 Step 3: Write the Code / 第3步:編寫代碼 11 Step 4: Compile / 第4步:編譯 11 Step 5: Run the Program / 第5步:運行程序 12 Step 6: Test and Debug the Program / 第6步:測試和調試程序 12 Step 7: Maintain and Modify the Program / 第7步:維護和修改代碼 13 Commentary / 說明 13 Programming Mechanics / 編程機制 13 Object Code Files, Executable Files, and Libraries / 目標代碼文件、可執(zhí)行文件和庫 14 Unix System / Unix系統(tǒng) 16 The GNU Compiler Collection and the LLVM Project / GNU編譯器集合和LLVM項目 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 / 本書的組織結構 22 Conventions Used in This Book / 本書的約定 22 Typeface / 字體 22 Program Output / 程序輸出 23 Special Elements / 特殊元素 24 Summary / 本章小結 24 Review Questions / 復習題 25 Programming Exercise / 編程練習 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遍:程序細節(jié) 31 The Structure of a Simple Program / 簡單程序的結構 40 Tips on Making Your Programs Readable / 提高程序可讀性的技巧 41 Taking Another Step in Using C / 進一步使用C 42 Documentation / 程序說明 43 Multiple Declarations / 多條聲明 43 Multiplication / 乘法 43 Printing Multiple Values / 打印多個值 43 While You’re at It—Multiple Functions / 多個函數(shù) 44 Introducing Debugging / 調試程序 46 Syntax Errors / 語法錯誤 46 Semantic Errors / 語義錯誤 47 Program State / 程序狀態(tài) 49 Keywords and Reserved Identifiers / 關鍵字和保留標識符 49 Key Concepts / 關鍵概念 50 Summary / 本章小結 51 Review Questions / 復習題 51 Programming Exercises / 編程練習 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ù)類型關鍵字 59 Integer Versus Floating-Point Types / 整數(shù)和浮點數(shù) 60 The Integer / 整數(shù) 61 The Floating-Point Number / 浮點數(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 / 復數(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 / 轉義序列示例 91 What Happens When the Program Runs / 程序運行情況 91 Flushing the Output / 刷新輸出 92 Key Concepts / 關鍵概念 93 Summary / 本章小結 93 Review Questions / 復習題 94 Programming Exercises / 編程練習 97 4 Character Strings and Formatted Input/Output 99 第4章 字符串和格式化輸入/輸出 Introductory Program / 前導程序 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預處理器 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()的轉換說明修飾符 115 What Does a Conversion Specification Convert? / 轉換說明的意義 122 Using scanf() / 使用scanf() 128 The * Modifier with printf() and scanf() / printf()和scanf()的*修飾符 133 Usage Tips for printf() / printf()的用法提示 135 Key Concepts / 關鍵概念 136 Summary / 本章小結 137 Review Questions / 復習題 138 Programming Exercises / 編程練習 140 5 Operators, Expressions, and Statements 143 第5章 運算符、表達式和語句 Introducing Loops / 循環(huán)簡介 144 Fundamental Operators / 基本運算符 146 Assignment Operator: = / 賦值運算符:= 146 Addition Operator: + / 加法運算符:+ 149 Subtraction Operator: - / 減法運算符:- 149 Sign Operators: - and + / 符號運算符:-和+ 150 Multiplication Operator: * / 乘法運算符:* 151 Division Operator: / / 除法運算符:/ 153 Operator Precedence / 運算符優(yōu)先級 154 Precedence and the Order of Evaluation / 優(yōu)先級和求值順序 156 Some Additional Operators / 其他運算符 157 The sizeof Operator and the size_t Type / sizeof運算符和size_t類型 158 Modulus Operator: % / 求模運算符:% 159 Increment and Decrement Operators: ++ and -- / 遞增和遞減運算符:++和-- 160 Decrementing: -- / 遞減運算符:-- 164 Precedence / 優(yōu)先級 165 Don’t Be Too Clever / 不要自作聰明 166 Expressions and Statements / 表達式和語句 167 Expressions / 表達式 167 Statements / 語句 168 Compound Statements (Blocks) / 復合語句(塊) 171 Type Conversions / 類型轉換 174 The Cast Operator / 強制類型轉換運算符 176 Function with Arguments / 帶參數(shù)的函數(shù) 177 A Sample Program / 示例程序 180 Key Concepts / 關鍵概念 182 Summary / 本章小結 182 Review Questions / 復習題 183 Programming Exercises / 編程練習 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風格讀取循環(huán) 192 The while Statement / while語句 193 Terminating a while Loop / 終止while循環(huán) 194 When a Loop Terminates / 何時終止循環(huán) 194 while: An Entry-Condition Loop / while:入口條件循環(huán) 195 Syntax Points / 語法要點 195 Which Is Bigger: Using Relational Operators and Expressions / 用關系運算符和表達式比較大小 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)先級和關系運算符 205 Indefinite Loops and Counting Loops / 不確定循環(huán)和計數(shù)循環(huán) 207 The for Loop / for循環(huán) 208 Using for for Flexibility / 利用for的靈活性 210 More Assignment Operators: +=, -=, *=, /=, %= / 其他賦值運算符:+=、-=、*=、/=、%= 215 The Comma Operator / 逗號運算符 215 Zeno Meets the for Loop / 當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 / 關鍵概念 234 Summary / 本章小結 235 Review Questions / 復習題 236 Programming Exercises / 編程練習 241 7 C Control Statements: Branching and Jumps 245 第7章 C控制語句:分支和跳轉 The if Statement / if語句 246 Adding else to the if Statement / if else語句 248 Another Example: Introducing getchar() and putchar() / 另一個示例:介紹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 / 邏輯運算符 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 / 一個統(tǒng)計單詞的程序 268 The Conditional Operator: ?: / 條件運算符:?: 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 / 多重標簽 284 switch and if else / switch和if else 286 The goto Statement / goto語句 287 Avoiding goto / 避免使用goto 287 Key Concepts / 關鍵概念 291 Summary / 本章小結 291 Review Questions / 復習題 292 Programming Exercises / 編程練習 296 8 Character Input/Output and Input Validation 299 第8章 字符輸入/輸出和輸入驗證 Single-Character I/O: getchar() and putchar() / 單字符I/O:getchar()和putchar() 300 Buffers / 緩沖區(qū) 301 Terminating Keyboard Input / 結束鍵盤輸入 302 Files, Streams, and Keyboard Input / 文件、流和鍵盤輸入 303 The End of File / 文件結尾 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 / 輸入驗證 317 Analyzing the Program / 分析程序 322 The Input Stream and Numbers / 輸入流和數(shù)字 323 Menu Browsing / 菜單瀏覽 324 Tasks / 任務 324 Toward a Smoother Execution / 使執(zhí)行更順利 325 Mixing Character and Numeric Input / 混合字符和數(shù)值輸入 327 Key Concepts / 關鍵概念 330 Summary / 本章小結 331 Review Questions / 復習題 331 Programming Exercises / 編程練習 332 9 Functions 335 第9章 函數(shù) Reviewing Functions / 復習函數(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 / 調用帶實際參數(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)點 353 Recursion / 遞歸 353 Recursion Revealed / 演示遞歸 354 Recursion Fundamentals / 遞歸的基本原理 355 Tail Recursion / 尾遞歸 356 Recursion and Reversal / 遞歸和倒序計算 358 Recursion Pros and Cons / 遞歸的優(yōu)缺點 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 / 查找地址:&運算符 367 Altering Variables in the Calling Function / 更改主調函數(shù)中的變量 369 Pointers: A First Look / 指針簡介 371 The Indirection Operator: * / 間接運算符:* 371 Declaring Pointers / 聲明指針 372 Using Pointers to Communicate Between Functions / 使用指針在函數(shù)間通信 373 Key Concepts / 關鍵概念 378 Summary / 本章小結 378 Review Questions / 復習題 379 Programming Exercises / 編程練習 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 / 保護數(shù)組中的數(shù)據(jù) 412 Using const with Formal Parameters / 對形式參數(shù)使用const 413 More About const / const的其他內容 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 / 復合字面量 431 Key Concepts / 關鍵概念 434 Summary / 本章小結 435 Review Questions / 復習題 436 Programming Exercises / 編程練習 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 / 把字符串轉換為數(shù)字 500 Key Concepts / 關鍵概念 504 Summary / 本章小結 504 Review Questions / 復習題 505 Programming Exercises / 編程練習 508 12 Storage Classes, Linkage, and Memory Management 511 第12章 存儲類別、鏈接和內存管理 Storage Classes / 存儲類別 511 Scope / 作用域 513 Linkage / 鏈接 515 Storage Duration / 存儲期 516 Automatic Variables / 自動變量 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 / 內部鏈接的靜態(tài)變量 529 Multiple Files / 多文件 530 Storage-Class Specifier Roundup / 存儲類別說明符 530 Storage Classes and Functions / 存儲類別和函數(shù) 533 Which Storage Class? / 存儲類別的選擇 534 A Random-Number Function and a Static Variable / 隨機數(shù)函數(shù)和靜態(tài)變量 534 Roll’Em / 擲骰子 538 Allocated Memory: malloc() and free() / 分配內存:malloc()和free() 543 The Importance of free() / free()的重要性 547 The calloc() Function / calloc()函數(shù) 548 Dynamic Memory Allocation and Variable-Length Arrays / 動態(tài)內存分配和變長數(shù)組 548 Storage Classes and Dynamic Memory Allocation / 存儲類別和動態(tà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 / 舊關鍵字的新位置 557 Key Concepts / 關鍵概念 558 Summary / 本章小結 558 Review Questions / 復習題 559 Programming Exercises / 編程練習 561 13 File Input/Output 565 第13章 文件輸入/輸出 Communicating with Files / 與文件進行通信 565 What Is a File? / 文件是什么 566 The Text Mode and the Binary Mode / 文本模式和二進制模式 566 Levels of I/O / I/O的級別 568 Standard Files / 標準文件 568 Standard I/O / 標準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 / 文件結尾 572 The fclose() Function / fclose()函數(shù) 574 Pointers to the Standard Files / 指向標準文件的指針 574 A Simple-Minded File-Condensing Program / 一個簡單的文件壓縮程序 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() / 隨機訪問:fseek()和ftell() 579 How fseek() and ftell() Work / fseek()和ftell()的工作原理 580 Binary Versus Text Mode / 二進制模式和文本模式 582 Portability / 可移植性 582 The fgetpos() and fsetpos() Functions / fgetpos()和fsetpos()函數(shù) 583 Behind the Scenes with Standard I/O / 標準I/O的機理 583 Other Standard I/O Functions / 其他標準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() / 二進制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 / 一個程序示例 589 Random Access with Binary I/O / 用二進制I/O進行隨機訪問 593 Key Concepts / 關鍵概念 594 Summary / 本章小結 595 Review Questions / 復習題 596 Programming Exercises / 編程練習 598 14 Structures and Other Data Forms 601 第14章 結構和其他數(shù)據(jù)形式 Sample Problem: Creating an Inventory of Books / 示例問題:創(chuàng)建圖書目錄 601 Setting Up the Structure Declaration / 建立結構聲明 604 Defining a Structure Variable / 定義結構變量 604 Initializing a Structure / 初始化結構 606 Gaining Access to Structure Members / 訪問結構成員 607 Initializers for Structures / 結構的初始化器 607 Arrays of Structures / 結構數(shù)組 608 Declaring an Array of Structures / 聲明結構數(shù)組 611 Identifying Members of an Array of Structures / 標識結構數(shù)組的成員 612 Program Discussion / 程序討論 612 Nested Structures / 嵌套結構 613 Pointers to Structures / 指向結構的指針 615 Declaring and Initializing a Structure Pointer / 聲明和初始化結構指針 617 Member Access by Pointer / 用指針訪問成員 617 Telling Functions About Structures / 向函數(shù)傳遞結構的信息 618 Passing Structure Members / 傳遞結構成員 618 Using the Structure Address / 傳遞結構的地址 619 Passing a Structure as an Argument / 傳遞結構 621 More on Structure Features / 其他結構特性 622 Structures or Pointer to Structures? / 結構和結構指針的選擇 626 Character Arrays or Character Pointers in a Structure / 結構中的字符數(shù)組和字符指針 627 Structure, Pointers, and malloc() / 結構、指針和malloc() 628 Compound Literals and Structures (C99) / 復合字面量和結構(C99) 631 Flexible Array Members (C99) / 伸縮型數(shù)組成員(C99) 633 Anonymous Structures (C11) / 匿名結構(C11) 636 Functions Using an Array of Structures / 使用結構數(shù)組的函數(shù) 637 Saving the Structure Contents in a File / 把結構內容保存到文件中 639 A Structure-Saving Example / 保存結構的程序示例 640 Program Points / 程序要點 643 Structures: What Next? / 鏈式結構 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 / 默認值 650 Assigned Values / 賦值 650 enum Usage / enum的用法 650 Shared Namespaces / 共享名稱空間 652 typedef: A Quick Look / typedef簡介 653 Fancy Declarations / 其他復雜的聲明 655 Functions and Pointers / 函數(shù)和指針 657 Key Concepts / 關鍵概念 665 Summary / 本章小結 665 Review Questions / 復習題 666 Programming Exercises / 編程練習 669 15 Bit Fiddling 673 第15章 位操作 Binary Numbers, Bits, and Bytes / 二進制數(shù)、位和字節(jié) 674 Binary Integers / 二進制整數(shù) 674 Signed Integers / 有符號整數(shù) 675 Binary Floating Point / 二進制浮點數(shù) 676 Other Number Bases / 其他進制數(shù) 676 Octal / 八進制 677 Hexadecimal / 十六進制 677 C’s Bitwise Operators / C按位運算符 678 Bitwise Logical Operators / 按位邏輯運算符 678 Usage: Masks / 用法:掩碼 680 Usage: Turning Bits On (Setting Bits) / 用法:打開位(設置位) 681 Usage: Turning Bits Off (Clearing Bits) / 用法:關閉位(清空位) 682 Usage: Toggling Bits / 用法:切換位 683 Usage: Checking the Value of a Bit / 用法:檢查位的值 683 Bitwise Shift Operators / 移位運算符 684 Programming Example / 編程示例 685 Another Example / 另一個例子 688 Bit Fields / 位字段 690 Bit-Field Example / 位字段示例 692 Bit Fields and Bitwise Operators / 位字段和按位運算符 696 Alignment Features (C11) / 對齊特性(C11) 703 Key Concepts / 關鍵概念 705 Summary / 本章小結 706 Review Questions / 復習題 706 Programming Exercises / 編程練習 708 16 The C Preprocessor and the C Library 711 第16章 C預處理器和C庫 First Steps in Translating a Program / 翻譯程序的第一步 712 Manifest Constants: #define / 明示常量:#define 713 Tokens / 記號 717 Redefining Constants / 重定義常量 717 Using Arguments with #define / 在#define中使用參數(shù) 718 Creating Strings from Macro Arguments: The # Operator / 用宏參數(shù)創(chuàng)建字符串:#運算符 721 Preprocessor Glue: The ## Operator / 預處理器粘合劑:##運算符 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預處理器角度看已定義 731 Conditional Compilation / 條件編譯 731 Predefined Macros / 預定義宏 737 #line and #error / #line和#error 738 #pragma / #pragma 739 Generic Selection (C11) / 泛型選擇(C11) 740 Inline Functions (C99) / 內聯(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ù)學庫 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 / 關鍵概念 768 Summary / 本章小結 768 Review Questions / 復習題 768 Programming Exercises / 編程練習 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 / 實現(xiàn)接口 796 Getting Queued with an ADT / 隊列ADT 804 Defining the Queue Abstract Data Type / 定義隊列抽象數(shù)據(jù)類型 804 Defining an Interface / 定義一個接口 805 Implementing the Interface Data Representation / 實現(xiàn)接口數(shù)據(jù)表示 806 Testing the Queue / 測試隊列 815 Simulating with a Queue / 用隊列進行模擬 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 / 二叉樹的實現(xiàn) 833 Trying the Tree / 使用二叉樹 849 Tree Thoughts / 樹的思想 854 Other Directions / 其他說明 856 Key Concepts / 關鍵概念 856 Summary / 本章小結 857 Review Questions / 復習題 857 Programming Exercises / 編程練習 858 A Answers to the Review Questions 861 附錄A 復習題答案 Answers to Review Questions for Chapter 1 / 第1章復習題答案 861 Answers to Review Questions for Chapter 2 / 第2章復習題答案 862 Answers to Review Questions for Chapter 3 / 第3章復習題答案 863 Answers to Review Questions for Chapter 4 / 第4章復習題答案 866 Answers to Review Questions for Chapter 5 / 第5章復習題答案 869 Answers to Review Questions for Chapter 6 / 第6章復習題答案 872 Answers to Review Questions for Chapter 7 / 第7章復習題答案 876 Answers to Review Questions for Chapter 8 / 第8章復習題答案 879 Answers to Review Questions for Chapter 9 / 第9章復習題答案 881 Answers to Review Questions for Chapter 10 / 第10章復習題答案 883 Answers to Review Questions for Chapter 11 / 第11章復習題答案 886 Answers to Review Questions for Chapter 12 / 第12章復習題答案 890 Answers to Review Questions for Chapter 13 / 第13章復習題答案 891 Answers to Review Questions for Chapter 14 / 第14章復習題答案 894 Answers to Review Questions for Chapter 15 / 第15章復習題答案 898 Answers to Review Questions for Chapter 16 / 第16章復習題答案 899 Answers to Review Questions for Chapter 17 / 第17章復習題答案 901 B Reference Section 905 附錄B 參考資料 Section Ⅰ: Additional Reading / 參考資料Ⅰ:補充閱讀 905 Online Resources / 在線資源 905 C Language Books / C語言書籍 907 Programming Books / 編程書籍 907 Reference Books / 參考書籍 908 C++ Books / C++書籍 908 Section Ⅱ: C Operators / 參考資料Ⅱ:C運算符 908 Arithmetic Operators / 算術運算符 909 Relational Operators / 關系運算符 910 Assignment Operators / 賦值運算符 910 Logical Operators / 邏輯運算符 911 The Conditional Operator / 條件運算符 911 Pointer-Related Operators / 與指針有關的運算符 912 Sign Operators / 符號運算符 912 Structure and Union Operators / 結構和聯(lián)合運算符 912 Bitwise Operators / 按位運算符 913 Miscellaneous Operators / 混合運算符 914 Section Ⅲ: Basic Types and Storage Classes / 參考資料Ⅲ:基本類型和存儲類別 915 Summary: The Basic Data Types / 總結:基本數(shù)據(jù)類型 915 Summary: How to Declare a Simple Variable / 總結:如何聲明一個簡單變量 917 Summary: Qualifiers / 總結:限定符 919 Section Ⅳ: Expressions, Statements, and Program Flow / 參考資料Ⅳ:表達式、語句和程序流 920 Summary: Expressions and Statements / 總結:表達式和語句 920 Summary: The while Statement / 總結:while語句 921 Summary: The for Statement / 總結:for語句 921 Summary: The do while Statement / 總結:do while語句 922 Summary: Using if Statements for Making Choices / 總結:if語句 923 Summary: Multiple Choice with switch / 帶多重選擇的switch語句 924 Summary: Program Jumps / 總結:程序跳轉 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) / 復數(shù):complex.h(C99) 927 Character Handling: ctype.h / 字符處理:ctype.h 929 Error Reporting: errno.h / 錯誤報告:errno.h 930 Floating-Point Environment: fenv.h (C99) / 浮點環(huán)境:fenv.h(C99) 930 Floating-point Characteristics: float.h / 浮點特性:float.h 933 Format Conversion of Integer Types: inttypes.h (C99) / 整數(shù)類型的格式轉換:inttypes.h 935 Alternative Spellings: iso646.h / 可選拼寫:iso646.h 936 Localization: locale.h / 本地化:locale.h 936 Math Library: math.h / 數(shù)學庫:math.h 939 Non-Local Jumps: setjmp.h / 非本地跳轉:setjmp.h 945 Signal Handling: signal.h / 信號處理: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 / 標準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ù)學:tgmath.h(C99) 965 Threads: threads.h (C11) / 線程:threads.h(C11) 967 Date and Time: time.h / 日期和時間:time.h 967 Unicode Utilities: uchar.h (C11) / 統(tǒng)一碼工具:uchar.h(C11) 971 Extended Multibyte and Wide-Character Utilities: wchar.h (C99) / 擴展的多字節(jié)字符和寬字符工具:wchar.h(C99) 972 Wide Character Classification and Mapping Utilities: wctype.h (C99) / 寬字符分類和映射工具:wctype.h(C99) 978 Section Ⅵ: Extended Integer Types / 參考資料Ⅵ:擴展的整數(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 / 可儲存指針值的整型 984 Extended Integer Constants / 擴展的整型常量 984 Section Ⅶ: Expanded Character Support / 參考資料Ⅶ:擴展字符支持 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ù)值計算增強 990 The IEC Floating-Point Standard / IEC浮點標準 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庫增補 995 Support for Complex Numbers / 對復數(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 / 結構和聯(lián)合 1001 Enumerations / 枚舉 1002 Pointer-to-void / 指向void的指針 1002 Boolean Types / 布爾類型 1003 Alternative Spellings / 可選拼寫 1003 Wide-Character Support / 寬字符支持 1003 Complex Types / 復數(shù)類型 1003 Inline Functions / 內聯(lián)函數(shù) 1003 C99/11 Features Not Found in C++11 / C++11中沒有的C99/C11特性 1004
你還可能感興趣
我要評論
|