3
4.11.1 File Inclusion......................................................................................................... 79
4.11.2 Macro Substitution ................................................................................................ 80
4.11.3 Conditional Inclusion ............................................................................................ 82
Chapter 5 - Pointers and Arrays ............................................................................................... 83
5.1 Pointers and Addresses................................................................................................... 83
5.2 Pointers and Function Arguments.................................................................................. 84
5.3 Pointers and Arrays ........................................................................................................ 87
5.4 Address Arithmetic ........................................................................................................ 90
5.5 Character Pointers and Functions................................................................................... 93
5.6 Pointer Arrays; Pointers to Pointers............................................................................... 96
5.7 Multi-dimensional Arrays .............................................................................................. 99
5.8 Initialization of Pointer Arrays..................................................................................... 101
5.9 Pointers vs. Multi-dimensional Arrays......................................................................... 101
5.10 Command-line Arguments ......................................................................................... 102
5.11 Pointers to Functions.................................................................................................. 106
5.12 Complicated Declarations .......................................................................................... 108
Chapter 6 - Structures............................................................................................................. 114
6.1 Basics of Structures...................................................................................................... 114
6.2 Structures and Functions .............................................................................................. 116
6.3 Arrays of Structures ..................................................................................................... 118
6.4 Pointers to Structures ................................................................................................... 122
6.5 Self-referential Structures ............................................................................................ 124
6.6 Table Lookup ............................................................................................................... 127
6.7 Typedef......................................................................................................................... 129
6.8 Unions .......................................................................................................................... 131
6.9 Bit-fields....................................................................................................................... 132
Chapter 7 - Input and Output.................................................................................................. 135
7.1 Standard Input and Output ........................................................................................... 135
7.2 Formatted Output - printf ............................................................................................. 137
7.3 Variable-length Argument Lists................................................................................... 138
7.4 Formatted Input - Scanf................................................................................................ 140
7.5 File Access ................................................................................................................... 142
7.6 Error Handling - Stderr and Exit .................................................................................. 145
7.7 Line Input and Output .................................................................................................. 146
7.8 Miscellaneous Functions .............................................................................................. 147
7.8.1 String Operations................................................................................................... 147
7.8.2 Character Class Testing and Conversion .............................................................. 148
7.8.3 Ungetc ................................................................................................................... 148
7.8.4 Command Execution ............................................................................................. 148
7.8.5 Storage Management............................................................................................. 148
7.8.6 Mathematical Functions ........................................................................................ 149
7.8.7 Random Number generation ................................................................................. 149
Chapter 8 - The UNIX System Interface................................................................................ 151
8.1 File Descriptors ............................................................................................................ 151
8.2 Low Level I/O - Read and Write.................................................................................. 152
8.3 Open, Creat, Close, Unlink .......................................................................................... 153
8.4 Random Access - Lseek ............................................................................................... 155
8.5 Example - An implementation of Fopen and Getc....................................................... 156
8.6 Example - Listing Directories ...................................................................................... 159
8.7 Example - A Storage Allocator .................................................................................... 163
Appendix A - Reference Manual ........................................................................................... 168
A.1 Introduction ................................................................................................................. 168