《C11編程導論英文版》是2016年4月電子工業出版社出版的圖書,作者是【美】Paul Deitel(保羅·戴特爾),HarveyDeitel(哈維·戴特爾)。
基本介紹
- 書名:C11編程導論英文版
- 作者:【美】Paul Deitel(保羅·戴特爾),HarveyDeitel(哈維·戴特爾)
- ISBN:978-7-121-27316-2
- 頁數:476
- 定價:89.00元
- 出版社:電子工業出版社
- 出版時間:2016年4月
- 開本:16
內容簡介,內容提要,目錄,作者簡介,本書特色,
內容簡介
《C11編程導論英文版》沿用了Deitel特色的“程式實況解說”,深入探討了C語言和C標準庫。通過完整的語法著色、代碼高亮、代碼演練和程式輸出,全面地介紹了測試程式的概念。《C11編程導論英文版》匯集約5000行C代碼和數百個開發技巧,將幫助你構建強大的應用程式。《C11編程導論英文版》的內容包括構建自定義數據結構、標準庫等;並選擇了C11標準的一些新特性,如多執行緒來幫助你為目前的多核系統編寫高性能的套用程式;C語言安全編程部分展示了如何讓你編寫的程式具有更好的魯棒性,不易受到攻擊。
《C11編程導論英文版》適合具有一定高級語言編程背景的程式設計師閱讀。
內容提要
《C11編程導論英文版》沿用了Deitel特色的“程式實況解說”,深入探討了C語言和C標準庫。通過完整的語法著色、代碼高亮、代碼演練和程式輸出,全面地介紹了測試程式的概念。《C11編程導論英文版》匯集約5000行C代碼和數百個開發技巧,將幫助你構建強大的應用程式。《C11編程導論英文版》的內容包括構建自定義數據結構、標準庫等;並選擇了C11標準的一些新特性,如多執行緒來幫助你為目前的多核系統編寫高性能的應用程式;C語言安全編程部分展示了如何讓你編寫的程式具有更好的魯棒性,不易受到攻擊。
《C11編程導論英文版》適合具有一定高級語言編程背景的程式設計師閱讀。
目錄
前言
1 Introduction
1.1 Introduction
1.2 The C Programming Language
1.3 C Standard Library
1.4 C++ and Other C-Based Languages
1.5 Typical C Program Development Environment
1.5.1 Phase 1: Creating a Program
1.5.2 Phases 2 and 3: Preprocessing and Compiling a C Program
1.5.3 Phase 4: Linking
1.5.4 Phase 5: Loading
1.5.5 Phase 6: Execution
1.5.6 Standard Input, Standard Output and Standard Error Streams
1.6 Test-Driving a C Application in Windows, Linux and Mac OS X
1.6.1 Running a C Application from the Windows Command Prompt
1.6.2 Running a C Application Using GNU C with Linux
1.6.3 Running a C Application Using GNU C with Mac OS X
1.7 Operating Systems
1.7.1 Windows—A Proprietary Operating System
1.7.2 Linux—An Open-Source Operating System
1.7.3 Apple’s Mac OS X; Apple’s iOS ® for iPhone ® , iPad ® and iPod Touch ® Devices
1.7.4 Google’s Android
2 Introduction to C Programming
2.1 Introduction
2.2 A Simple C Program: Printing a Line of Text
2.3 Another Simple C Program: Adding Two Integers
2.4 Arithmetic in C
2.5 Decision Making: Equality and Relational Operators
2.6 Secure C Programming
3 Control Statements: Part I
3.1 Introduction
3.2 Control Structures
3.3 The if Selection Statement
3.4 The if … else Selection Statement
3.5 The while Repetition Statement
3.6 Class Average with Counter-Controlled Repetition
3.7 Class Average with Sentinel-Controlled Repetition
3.8 Nested Control Statements
3.9 Assignment Operators
3.10 Increment and Decrement Operators
3.11 Secure C Programming
4 Control Statements: Part II
4.1 Introduction
4.2 Repetition Essentials
4.3 Counter-Controlled Repetition
4.4 for Repetition Statement
4.5 for Statement: Notes and Observations
4.6 Examples Using the for Statement
4.7 switch Multiple-Selection Statement
4.8 do … while Repetition Statement
4.9 break and continue Statements
4.10 Logical Operators
4.11 Confusing Equality ( == ) and Assignment ( = ) Operators
4.12 Secure C Programming
5 Functions
5.1 Introduction
5.2 Program Modules in C
5.3 Math Library Functions
5.4 Functions
5.5 Function Definitions
5.6 Function Prototypes: A Deeper Look
5.7 Function Call Stack and Stack Frames
5.8 Headers
5.9 Passing Arguments By Value and By Reference
5.10 Random Number Generation
5.11 Example: A Game of Chance
5.12 Storage Classes
5.13 Scope Rules
5.14 Recursion
5.15 Example Using Recursion: Fibonacci Series
5.16 Recursion vs. Iteration
5.17 Secure C Programming
6 Arrays
6.1 Introduction
6.2 Arrays
6.3 Defining Arrays
6.4 Array Examples
6.5 Passing Arrays to Functions
6.6 Sorting Arrays
6.7 Case Study: Computing Mean, Median and Mode Using Arrays
6.8 Searching Arrays
6.9 Multidimensional Arrays
6.10 Variable-Length Arrays
6.11 Secure C Programming
7 Pointers
7.1 Introduction
7.2 Pointer Variable Definitions and Initialization
7.3 Pointer Operators
7.4 Passing Arguments to Functions by Reference
7.5 Using the const Qualifier with Pointers
7.5.1 Converting a String to Uppercase Using a Non-Constant Pointer to Non-Constant Data
7.5.2 Printing a String One Character at a Time Using a Non-Constant Pointer to Constant Data
7.5.3 Attempting to Modify a Constant Pointer to Non-Constant Data
7.5.4 Attempting to Modify a Constant Pointer to Constant Data
7.6 Bubble Sort Using Pass-by-Reference
7.7 sizeof Operator
7.8 Pointer Expressions and Pointer Arithmetic
7.9 Relationship between Pointers and Arrays
7.10 Arrays of Pointers
7.11 Case Study: Card Shuffling and Dealing Simulation
7.12 Pointers to Functions
7.13 Secure C Programming
8 Characters and Strings
8.1 Introduction
8.2 Fundamentals of Strings and Characters
8.3 Character-Handling Library
8.3.1 Functions isdigit , isalpha , isalnum and isxdigit
8.3.2 Functions islower , isupper , tolower and toupper
8.3.3 Functions isspace , iscntrl , ispunct , isprint and isgraph
8.4 String-Conversion Functions
8.4.1 Function strtod
8.4.2 Function strtol
8.4.3 Function strtoul
8.5 Standard Input/Output Library Functions
8.5.1 Functions fgets and putchar
8.5.2 Function getchar
8.5.3 Function sprintf
8.5.4 Function sscanf
8.6 String-Manipulation Functions of the String-Handling Library
8.6.1 Functions strcpy and strncpy
8.6.2 Functions strcat and strncat
8.7 Comparison Functions of the String-Handling Library
8.8 Search Functions of the String-Handling Library
8.8.1 Function strchr
8.8.2 Function strcspn
8.8.3 Function strpbrk
8.8.4 Function strrchr
8.8.5 Function strspn
8.8.6 Function strstr
8.8.7 Function strtok
8.9 Memory Functions of the String-Handling Library
8.9.1 Function memcpy
8.9.2 Function memmove
8.9.3 Function memcmp
8.9.4 Function memchr
8.9.5 Function memset
8.10 Other Functions of the String-Handling Library
8.10.1 Function strerror
8.10.2 Function strlen
8.11 Secure C Programming
9 Formatted Input/Output
9.1 Introduction
9.2 Streams
9.3 Formatting Output with printf
9.4 Printing Integers
9.5 Printing Floating-Point Numbers
9.6 Printing Strings and Characters
9.7 Other Conversion Specifiers
9.8 Printing with Field Widths and Precision
9.9 Using Flags in the printf Format Control String
9.10 Printing Literals and Escape Sequences
9.11 Reading Formatted Input with scanf
9.12 Secure C Programming
10 Structures, Unions, Bit Manipulation and Enumerations
10.1 Introduction
10.2 Structure Definitions
10.2.1 Self-Referential Structures
10.2.2 Defining Variables of Structure Types
10.2.3 Structure Tag Names
10.2.4 Operations That Can Be Performed on Structures
10.3 Initializing Structures
10.4 Accessing Structure Members
10.5 Using Structures with Functions
10.6 typedef
10.7 Example: High-Performance Card Shuffling and Dealing Simulation
10.8 Unions
10.8.1 Union Declarations
10.8.2 Operations That Can Be Performed on Unions
10.8.3 Initializing Unions in Declarations
10.8.4 Demonstrating Unions
10.9 Bitwise Operators
10.9.1 Displaying an Unsigned Integer in Bits
10.9.2 Making Function displayBits More Scalable and Portable
10.9.3 Using the Bitwise AND, Inclusive OR, Exclusive OR and Complement Operators
10.9.4 Using the Bitwise Left- and Right-Shift Operators
10.9.5 Bitwise Assignment Operators
10.10 Bit Fields
10.11 Enumeration Constants
10.12 Secure C Programming
11 File Processing
11.1 Introduction
11.2 Files and Streams
11.3 Creating a Sequential-Access File
11.4 Reading Data from a Sequential-Access File
11.5 Random-Access Files
11.6 Creating a Random-Access File
11.7 Writing Data Randomly to a Random-Access File
11.8 Reading Data from a Random-Access File
11.9 Case Study: Transaction-Processing Program
11.10 Secure C Programming
12 Data Structures
12.1 Introduction
12.2 Self-Referential Structures
12.3 Dynamic Memory Allocation
12.4 Linked Lists
12.4.1 Function insert
12.4.2 Function delete
12.4.3 Function printList
12.5 Stacks
12.5.1 Function push
12.5.2 Function pop
12.5.3 Applications of Stacks
12.6 Queues
12.6.1 Function enqueue
12.6.2 Function dequeue
12.7 Trees
12.7.1 Function insertNode
12.7.2 Traversals: Functions inOrder , preOrder and postOrder
12.7.3 Duplicate Elimination
12.7.4 Binary Tree Search
12.8 Secure C Programming
13 Preprocessor
13.1 Introduction
13.2 #include Preprocessor Directive
13.3 #define Preprocessor Directive: Symbolic Constants
13.4 #define Preprocessor Directive: Macros
13.5 Conditional Compilation
13.6 #error and #pragma Preprocessor Directives
13.7 # and ## Operators
13.8 Line Numbers
13.9 Predefined Symbolic Constants
13.10 Assertions
13.11 Secure C Programming
14 Other Topics
14.1 Introduction
14.2 Redirecting I/O
14.3 Variable-Length Argument Lists
14.4 Using Command-Line Arguments
14.5 Notes on Compiling Multiple-Source-File Programs
14.6 Program Termination with exit and atexit
14.7 Suffixes for Integer and Floating-Point Literals
14.8 Signal Handling
14.9 Dynamic Memory Allocation: Functions calloc and realloc
14.10 Unconditional Branching with goto
A Operator Precedence Chart
B ASCII Character Set
C Number Systems
C.1 Introduction
C.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers
C.3 Converting Octal and Hexadecimal Numbers to Binary Numbers
C.4 Converting from Binary, Octal or Hexadecimal to Decimal
C.5 Converting from Decimal to Binary, Octal or Hexadecimal
C.6 Negative Binary Numbers: Two’s Complement Notation
D Sorting: A Deeper Look
D.1 Introduction
D.2 Big O Notation
D.3 Selection Sort
D.4 Insertion Sort
D.5 Merge Sort
E Additional Features of the C Standard
E.1 Introduction
E.2 Support for C99
E.3 C99 Headers
E.4 Mixing Declarations and Executable Code
E.5 Declaring a Variable in a for Statement Header
E.6 Designated Initializers and Compound Literals
E.7 Type bool
E.8 Implicit int in Function Declarations
E.9 Complex Numbers
E.10 Variable-Length Arrays
E.11 Additions to the Preprocessor
E.12 Other C99 Features
E.12.1 Compiler Minimum Resource Limits
E.12.2 The restrict Keyword
E.12.3 Reliable Integer Division
E.12.4 Flexible Array Members
E.12.5 Relaxed Constraints on Aggregate Initialization
E.12.6 Type Generic Math
E.12.7 Inline Functions
E.12.8 return Without Expression
E.12.9 __func__ Predefined Identifier
E.12.10 va_copy Macro
E.13 New Features in the C11 Standard
E.13.1 New C11 Headers
E.13.2 Multithreading Support
E.13.3 quick_exit function
E.13.4 Unicode ® Support
E.13.5 _Noreturn Function Specifier
E.13.6 Type-Generic Expressions
E.13.7 Annex L: Analyzability and Undefined Behavior
E.13.8 Anonymous Structures and Unions
E.13.9 Memory Alignment Control
E.13.10 Static Assertions
E.13.11 Floating Point Types
E.14 Web Resources
F Using the Visual Studio Debugger
F.1 Introduction
F.2 Breakpoints and the Continue Command
F.3 Locals and Watch Windows
F.4 Controlling Execution Using the Step Into , Step Over , Step Out and Continue Commands
F.5 Autos Window
G Using the GNU Debugger
G.1 Introduction
G.2 Breakpoints and the run , stop , continue and print Commands
G.3 print and set Commands
G.4 Controlling Execution Using the step , finish and next Commands
G.5 watch Command
Index
作者簡介
Paul Deitel,Deitel & Associates有限公司的CEO兼CTO,畢業於麻省理工學院,主修信息技術。在Deitel & Associate有限公司公司工作的過程中,他已經為行業、政府機關和軍隊客戶提供了數百節編程課程,這些客戶包括思科、IBM、西門子、Sun Microsystems、戴爾、Fidelity、甘迺迪航天中心、美國國家強風暴實驗室、白沙飛彈試驗場、Rogue Wave Software、波音公司、SunGard Higher Education、北電網路公司、彪馬、iRobot、Invensys等。他和本書的合著者Harvey M. Deitel博士是全球暢銷程式語言教材、專業書籍和視頻的作者。
Harvey Deitel博士,Deitel & Associates有限公司的董事長和首席戰略官,在計算機領域中擁有50多年的經驗。Deitel博士獲得了麻省理工學院電子工程(學習計算)的學士和碩士學位,並獲得了波士頓大學的數學博士學位(學習計算機科學)。他擁有豐富的行業和大學教學經驗,在1991年與兒子Paul Deitel創辦Deitel & Associates有限公司之前,他是波士頓大學計算機科學系的主任並獲得了終身任職權。Deitel博士為很多大公司、學術研究機構、政府機關和軍方提供了數百場專業編程講座。Deitel的出版物獲得了國際上的認可,並被翻譯為繁體中文、簡體中文、韓語、日語、德語、俄語、西班牙語、法語、波蘭語、義大利語、葡萄牙語、希臘語、烏爾都語和土耳其語。
本書特色
本書的主要特色如下:
·覆蓋C語言新標準。本書是針對2011年批准的C語言新標準編寫的,該標準通常被稱為C11或者被簡單地稱為“C標準”。不同編譯器對新標準的支持有所不同。我們的大多數讀者會選擇使用GNU gcc編譯器(支持新標準中的很多關鍵特性)或者微軟的Visual C++編譯器。微軟只支持被添加到C99和C11中的一小部分C特性——主要是C++標準中也需要的那些特性。為了適應所有的讀者,我們將新標準特性的討論放在易於使用的相關章節,以及附錄E“C語言新標準的附加特性”中。我們還用由C語言新標準引起的首選版本取代了過時的功能。
·C語言安全編程。我們在很多C語言編程章節中都添加了關於C語言安全編程的注意事項。
·專注於性能問題。C語言經常受到性能密集型應用程式(例如,作業系統、實時系統、嵌入式系統和通信系統)設計師的青睞,因此,我們會密切關注性能問題。
·所有的代碼都在Windows和Linux下進行了測試。我們分別使用Visual C++(Windows)和GNU gcc(Linux)對每個示例代碼進行了測試。
·更深入地研究了排序。排序是一個很有趣的問題,因為雖然不同的排序算法最終會得到相同的結果,但它們的記憶體消耗、占用CPU的時間和其他系統資源完全不同——算法性能至關重要。我們在第6章開始介紹排序,並且在附錄D中對其進行了更深入的探討。我們考慮了幾種算法,並從它們的記憶體消耗和對處理器的要求方面進行了比較。為此,我們引入了大O表示法,它用於表示使用算法解決問題的困難程度。我們在附錄D討論了選擇排序、插入排序和遞歸歸併排序。
·調試器附錄。本書中包含了Visual Studio和GNU gdb調試附錄。
·運算順序。本書討論了運算順序問題,來幫助你避免錯誤。
·C++風格的//注釋。我們使用的是較新的、更簡潔的C++風格//注釋,而不是老式的C風格/*...*/注釋。
C語言安全編程注意事項
經驗表明,人們很難創建出可以抵抗病毒、蠕蟲等攻擊的具有工業強度的系統。如今,通過網際網路,這類攻擊瞬間就可以對全球範圍造成影響,而這些軟體漏洞往往來自很容易避免的編程問題。從開發周期的開始就將安全性考慮進來,可以大大減少開發的成本和漏洞。
人們創建了CERT Coordination Center來分析和及時應對攻擊。CERT(計算機安全應急回響組,Computer Emergency Response Team)標準會被發布和推廣,以幫助C語言程式設計師和其他人實現具有工業強度系統的安全編碼標準,這樣就可以避免造成開放式系統受到攻擊的編程實踐。CERT標準將隨著新出現的安全問題而不斷演變。
我們的代碼符合書籍水平的CERT建議。
我們在第2章~第13章中各章的最後一節Secure C Programming(C語言安全編程)部分討論了很多重要的主題,包括運算溢出的測試、無符號整數類型的使用、C標準附錄K中的新安全函式、檢查標準庫函式返回的狀態信息的重要性、範圍檢查、安全隨機數的生成、數組邊界檢查、避免緩衝區溢出的技術、輸入驗證、避免未定義的行為、返回狀態信息的函式和未返回狀態信息的類似函式的選擇、確保指針總是NULL或者包含有效地址、預處理宏的首選C函式等。
教學方法
本書包含豐富的示例。我們將專注於良好的軟體工程並強調程式的清晰性。
語法著色。為了增加可讀性,我們為代碼添加了語法陰影,這與大多數IDE和代碼編輯器給代碼的語法添加顏色是類似的。我們採用的語法著色約定是:
注釋用常規字型表示。
關鍵字用粗字型表示。
常量和字面值用比關鍵字稍淺一點的黑體字來表示。
所有的其他代碼用黑體表示。
代碼高亮顯示。我們在每個原始碼程式的關鍵代碼段都放置了一個灰色的矩形框。
使用字型突出顯示。為了便於參考,我們用粗體表示每個定義性出現的關鍵概念和索引的頁面引用。我們用加粗的Helvetica字型來強調螢幕組件(例如,File選單)、用Lucida字型來強調C語言程式文本(例如,int x = 5;)。
目標。每章都包含一個Objectives(本章目標)列表。
插圖/圖。我們在本書中包含了大量的圖表、表格、線條圖、流程圖、程式和程式輸出。
編程技巧。我們提供了編程技巧來幫助你關注程式開發的重要方面。這些技巧和實踐是我們在8年編程和企業培訓經驗中積累的精華。最佳編程實踐
最佳編程實踐讓讀者關注那些有助於編寫更清晰、更易理解和維護的程式的技術。
常見編程錯誤
指出這些常見的編程錯誤可以減少讀者犯類似錯誤的可能性。
錯誤預防技巧
這些技巧包括揭露和刪除程式中bug的建議;大多數技巧描述的是如何預防將bug帶入C程式中。
性能技巧
這些技巧強調的是如何讓程式運行得更快或者儘量減少它們占用的記憶體。
可移植性技巧
可移植性技巧可以幫助你編寫能夠在各種平台上運行的代碼。
軟體工程意見
軟體工程意見強調的是影響軟體系統(尤其是大型系統)構建的架構和設計問題。
索引。我們在書中包含了大量的索引,它在你將本書當作參考書使用時尤為有用。我們使用加粗的頁號來強調關鍵術語的定義出現的頁碼。