| Preface |
|
xi | |
|
|
|
|
|
|
3 | (17) |
|
|
|
3 | (1) |
|
The Structure of C Programs |
|
|
4 | (2) |
|
|
|
6 | (1) |
|
|
|
7 | (1) |
|
|
|
8 | (5) |
|
|
|
13 | (3) |
|
|
|
16 | (4) |
|
|
|
20 | (12) |
|
|
|
20 | (1) |
|
|
|
21 | (5) |
|
|
|
26 | (2) |
|
Complex Floating-Point Types (C99) |
|
|
28 | (1) |
|
|
|
29 | (1) |
|
|
|
30 | (2) |
|
|
|
32 | (8) |
|
|
|
32 | (1) |
|
|
|
33 | (1) |
|
|
|
34 | (3) |
|
|
|
37 | (3) |
|
|
|
40 | (15) |
|
Conversion of Arithmetic Types |
|
|
41 | (7) |
|
Conversion of Nonarithmetic Types |
|
|
48 | (7) |
|
Expressions and Operators |
|
|
55 | (28) |
|
How Expressions Are Evaluated |
|
|
56 | (3) |
|
|
|
59 | (22) |
|
|
|
81 | (2) |
|
|
|
83 | (13) |
|
|
|
83 | (1) |
|
|
|
84 | (1) |
|
|
|
85 | (4) |
|
|
|
89 | (3) |
|
|
|
92 | (4) |
|
|
|
96 | (15) |
|
|
|
96 | (7) |
|
|
|
103 | (1) |
|
How Functions Are Executed |
|
|
104 | (1) |
|
Pointers as Arguments and Return Values |
|
|
104 | (2) |
|
|
|
106 | (1) |
|
|
|
107 | (1) |
|
Variable Numbers of Arguments |
|
|
108 | (3) |
|
|
|
111 | (11) |
|
|
|
111 | (2) |
|
|
|
113 | (1) |
|
|
|
114 | (2) |
|
|
|
116 | (1) |
|
|
|
117 | (3) |
|
Arrays as Arguments of Functions |
|
|
120 | (2) |
|
|
|
122 | (17) |
|
|
|
122 | (3) |
|
|
|
125 | (4) |
|
Pointers and Type Qualifiers |
|
|
129 | (3) |
|
Pointers to Arrays and Arrays of Pointers |
|
|
132 | (4) |
|
|
|
136 | (3) |
|
Structures, Unions, and Bit-Fields |
|
|
139 | (14) |
|
|
|
139 | (10) |
|
|
|
149 | (2) |
|
|
|
151 | (2) |
|
|
|
153 | (14) |
|
|
|
153 | (7) |
|
|
|
160 | (1) |
|
|
|
161 | (2) |
|
|
|
163 | (1) |
|
Storage Duration of Objects |
|
|
164 | (1) |
|
|
|
165 | (2) |
|
Dynamic Memory Management |
|
|
167 | (15) |
|
Allocating Memory Dynamically |
|
|
168 | (1) |
|
Characteristics of Allocated Memory |
|
|
169 | (1) |
|
Resizing and Releasing Memory |
|
|
170 | (1) |
|
An All-Purpose Binary Tree |
|
|
171 | (1) |
|
|
|
172 | (1) |
|
|
|
172 | (10) |
|
|
|
182 | (27) |
|
|
|
182 | (1) |
|
|
|
183 | (3) |
|
Opening and Closing Files |
|
|
186 | (2) |
|
|
|
188 | (17) |
|
|
|
205 | (4) |
|
|
|
209 | (18) |
|
Inserting the Contents of Header Files |
|
|
210 | (1) |
|
Defining and Using Macros |
|
|
211 | (7) |
|
|
|
218 | (2) |
|
|
|
220 | (1) |
|
Generating Error Messages |
|
|
221 | (1) |
|
|
|
221 | (1) |
|
|
|
222 | (1) |
|
|
|
223 | (4) |
|
Part II. Standard Library |
|
|
|
|
|
227 | (25) |
|
Using the Standard Headers |
|
|
227 | (3) |
|
Contents of the Standard Headers |
|
|
230 | (22) |
|
|
|
252 | (19) |
|
|
|
252 | (1) |
|
|
|
253 | (7) |
|
Character Classification and Conversion |
|
|
260 | (2) |
|
|
|
262 | (1) |
|
|
|
263 | (1) |
|
Converting Between Numbers and Strings |
|
|
264 | (1) |
|
|
|
264 | (1) |
|
|
|
265 | (1) |
|
Dynamic Memory Management |
|
|
265 | (1) |
|
|
|
266 | (1) |
|
|
|
267 | (1) |
|
|
|
268 | (1) |
|
|
|
269 | (1) |
|
|
|
269 | (1) |
|
|
|
270 | (1) |
|
Standard Library Functions |
|
|
271 | (220) |
|
|
|
|
|
|
491 | (21) |
|
The GNU Compiler Collection |
|
|
491 | (1) |
|
Obtaining and Installing GCC |
|
|
492 | (1) |
|
Compiling C Programs with GCC |
|
|
493 | (8) |
|
|
|
501 | (1) |
|
|
|
502 | (1) |
|
|
|
503 | (4) |
|
|
|
507 | (1) |
|
|
|
507 | (1) |
|
Option and Environment Variable Summary |
|
|
508 | (4) |
|
Using make to Build C Programs |
|
|
512 | (33) |
|
Targets, Prerequisites, and Commands |
|
|
512 | (1) |
|
|
|
513 | (1) |
|
|
|
513 | (7) |
|
|
|
520 | (1) |
|
|
|
520 | (7) |
|
|
|
527 | (1) |
|
|
|
528 | (1) |
|
|
|
529 | (1) |
|
|
|
530 | (4) |
|
|
|
534 | (3) |
|
|
|
537 | (8) |
|
Debugging C Programs with GDB |
|
|
545 | (32) |
|
|
|
546 | (1) |
|
A Sample Debugging Session |
|
|
546 | (4) |
|
|
|
550 | (4) |
|
|
|
554 | (23) |
| Index |
|
577 | |