Contents in Detail
Cover Page
Title Page
Copyright Page
Dedication
About the Author
About the Contributor
About the Tech Reviewer
BRIEF CONTENTS
CONTENTS IN DETAIL
FOREWORD BY PASCAL CUOQ
FOREWORD BY OLLIE WHITEHOUSE
ACKNOWLEDGMENTS
INTRODUCTION
A Brief History of C
The C Standard
The CERT C Coding Standard
Who This Book Is For
What’s in This Book
1 GETTING STARTED WITH C
Developing Your First C Program
Editors and Integrated Development Environments
Compilers
Portability
Summary
2 OBJECTS, FUNCTIONS, AND TYPES
Objects, Functions, Types, and Pointers
Declaring Variables
Scope
Storage Duration
Alignment
Object Types
Function Types
Derived Types
Tags
Type Qualifiers
Exercises
Summary
3 ARITHMETIC TYPES
Integers
Floating-Point
Arithmetic Conversion
Summary
4 EXPRESSIONS AND OPERATORS
Simple Assignment
Evaluations
Function Invocation
Increment and Decrement Operators
Operator Precedence and Associativity
Order of Evaluation
sizeof Operator
Arithmetic Operators
Bitwise Operators
Logical Operators
Cast Operators
Conditional Operator
_Alignof Operator
Relational Operators
Compound Assignment Operators
Comma Operator
Pointer Arithmetic
Summary
5 CONTROL FLOW
Expression Statements
Compound Statements
Selection Statements
Iteration Statements
Jump Statements
Exercises
Summary
6 DYNAMICALLY ALLOCATED MEMORY
Storage Duration
Memory Management Functions
Memory States
Flexible Array Members
Other Dynamically Allocated Storage
Debugging Allocated Storage Problems
Exercises
Summary
7 CHARACTERS AND STRINGS
Characters
Strings
String-Handling Functions
Summary
8 INPUT/OUTPUT
Standard I/O Streams
Opening and Creating Files
Closing Files
Reading and Writing Characters and Lines
Stream Flushing
Setting the Position in a File
Removing and Renaming Files
Using Temporary Files
Reading Formatted Text Streams
Reading to and Writing from Binary Streams
Summary
9 PREPROCESSOR
The Compilation Process
File Inclusion
Conditional Inclusion
Macro Definitions
Summary
10 PROGRAM STRUCTURE
Principles of Componentization
Executables
Linkage
Structuring a Simple Program
Building the Code
Summary
11 DEBUGGING, TESTING, AND ANALYSIS
Assertions
Compiler Settings and Flags
Debugging
Unit Testing
Static Analysis
Dynamic Analysis
Exercises
Summary
REFERENCES
INDEX
iii
iv
v
vi
vii
viii
ix
x
xi
xii
xiii
xiv
xv
xvi
xvii
xviii
xix
xxi
xxiii
xxiv
xxv
xxvi
xxviii
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
194
195
196
197
198
199
200
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
243
244