The C programming Language by Kernighan and Ritchie

No Comments
Preface .................................................................................................................................................... 6
Preface to the first edition........................................................................................................................ 7
Chapter 1 - A Tutorial Introduction .......................................................................................................... 8
1.1 Getting Started .............................................................................................................................. 8
1.2 Variables and Arithmetic Expressions ........................................................................................ 10
1.3 The for statement ........................................................................................................................ 14
1.4 Symbolic Constants .................................................................................................................... 15
1.5 Character Input and Output......................................................................................................... 15
1.5.1 File Copying ......................................................................................................................... 16
1.5.2 Character Counting.............................................................................................................. 17
1.5.3 Line Counting....................................................................................................................... 18
1.5.4 Word Counting ..................................................................................................................... 19
1.6 Arrays .......................................................................................................................................... 20
1.7 Functions..................................................................................................................................... 22
1.8 Arguments - Call by Value .......................................................................................................... 25
1.9 Character Arrays ......................................................................................................................... 25
1.10 External Variables and Scope................................................................................................... 27
Chapter 2 - Types, Operators and Expressions .................................................................................... 31
2.1 Variable Names........................................................................................................................... 31
2.2 Data Types and Sizes ................................................................................................................. 31
2.3 Constants .................................................................................................................................... 32
2.4 Declarations ................................................................................................................................ 34
2.5 Arithmetic Operators ................................................................................................................... 35
2.6 Relational and Logical Operators................................................................................................ 35
2.7 Type Conversions ....................................................................................................................... 36
2.8 Increment and Decrement Operators ......................................................................................... 39
2.9 Bitwise Operators........................................................................................................................ 40
2.10 Assignment Operators and Expressions................................................................................... 41
2.11 Conditional Expressions............................................................................................................ 43
2.12 Precedence and Order of Evaluation........................................................................................ 43
Chapter 3 - Control Flow ....................................................................................................................... 46
3.1 Statements and Blocks ............................................................................................................... 46
3.2 If-Else .......................................................................................................................................... 46
3.3 Else-If .......................................................................................................................................... 47
3.4 Switch.......................................................................................................................................... 48
3.5 Loops - While and For................................................................................................................. 49
3.6 Loops - Do-While ........................................................................................................................ 52
3.7 Break and Continue .................................................................................................................... 53
3.8 Goto and labels ........................................................................................................................... 53
Chapter 4 - Functions and Program Structure ...................................................................................... 55
4.1 Basics of Functions ..................................................................................................................... 55
4.2 Functions Returning Non-integers .............................................................................................. 57
4.3 External Variables ....................................................................................................................... 59
4.4 Scope Rules ................................................................................................................................ 64
4.5 Header Files ................................................................................................................................ 65
4.6 Static Variables ........................................................................................................................... 66
4.7 Register Variables....................................................................................................................... 67
4.8 Block Structure ............................................................................................................................ 67
4.9 Initialization.................................................................................................................................. 68
4.10 Recursion .................................................................................................................................. 69
4.11 The C Preprocessor .................................................................................................................. 70
4.11.1 File Inclusion ...................................................................................................................... 70
4.11.2 Macro Substitution ............................................................................................................. 71
4.11.3 Conditional Inclusion.......................................................................................................... 72
Chapter 5 - Pointers and Arrays ............................................................................................................ 74
5.1 Pointers and Addresses .............................................................................................................. 74
5.2 Pointers and Function Arguments............................................................................................... 75
5.3 Pointers and Arrays..................................................................................................................... 77
5.4 Address Arithmetic ...................................................................................................................... 80
5.5 Character Pointers and Functions .............................................................................................. 83
5.6 Pointer Arrays; Pointers to Pointers............................................................................................ 85
5.7 Multi-dimensional Arrays............................................................................................................. 88
  3
5.8 Initialization of Pointer Arrays...................................................................................................... 90
5.9 Pointers vs. Multi-dimensional Arrays......................................................................................... 90
5.10 Command-line Arguments ........................................................................................................ 91
5.11 Pointers to Functions ................................................................................................................ 94
5.12 Complicated Declarations ......................................................................................................... 97
Chapter 6 - Structures ......................................................................................................................... 102
6.1 Basics of Structures .................................................................................................................. 102
6.2 Structures and Functions .......................................................................................................... 104
6.3 Arrays of Structures .................................................................................................................. 106
6.4 Pointers to Structures................................................................................................................ 109
6.5 Self-referential Structures ......................................................................................................... 110
6.6 Table Lookup ............................................................................................................................ 114
6.7 Typedef ..................................................................................................................................... 116
6.8 Unions ....................................................................................................................................... 117
6.9 Bit-fields..................................................................................................................................... 118
Chapter 7 - Input and Output............................................................................................................... 120
7.1 Standard Input and Output........................................................................................................ 120
7.2 Formatted Output - printf........................................................................................................... 121
7.3 Variable-length Argument Lists ................................................................................................. 123
7.4 Formatted Input - Scanf ............................................................................................................ 124
7.5 File Access ................................................................................................................................ 126
7.6 Error Handling - Stderr and Exit ................................................................................................ 128
7.7 Line Input and Output................................................................................................................ 129
7.8 Miscellaneous Functions........................................................................................................... 131
7.8.1 String Operations ............................................................................................................... 131
7.8.2 Character Class Testing and Conversion.......................................................................... 131
7.8.3 Ungetc................................................................................................................................ 131
7.8.4 Command Execution ......................................................................................................... 131
7.8.5 Storage Management ........................................................................................................ 131
7.8.6 Mathematical Functions..................................................................................................... 132
7.8.7 Random Number generation ............................................................................................. 132
Chapter 8 - The UNIX System Interface.............................................................................................. 134
8.1 File Descriptors ......................................................................................................................... 134
8.2 Low Level I/O - Read and Write ................................................................................................ 134
8.3 Open, Creat, Close, Unlink ....................................................................................................... 136
8.4 Random Access - Lseek ........................................................................................................... 138
8.5 Example - An implementation of Fopen and Getc .................................................................... 138
8.6 Example - Listing Directories .................................................................................................... 141
8.7 Example - A Storage Allocator .................................................................................................. 145
Appendix A - Reference Manual ......................................................................................................... 150
A.1 Introduction ............................................................................................................................... 150
A.2 Lexical Conventions.................................................................................................................. 150
A.2.1 Tokens............................................................................................................................... 150
A.2.2 Comments ......................................................................................................................... 150
A.2.3 Identifiers ........................................................................................................................... 150
A.2.4 Keywords........................................................................................................................... 150
A.2.5 Constants .......................................................................................................................... 151
A.2.6 String Literals .................................................................................................................... 152
A.3 Syntax Notation ........................................................................................................................ 152
A.4 Meaning of Identifiers ............................................................................................................... 153
A.4.1 Storage Class .................................................................................................................... 153
A.4.2 Basic Types ....................................................................................................................... 153
A.4.3 Derived types .................................................................................................................... 154
A.4.4 Type Qualifiers .................................................................................................................. 154
A.5 Objects and Lvalues ................................................................................................................. 154
A.6 Conversions .............................................................................................................................. 154
A.6.1 Integral Promotion ............................................................................................................. 155
A.6.2 Integral Conversions ......................................................................................................... 155
A.6.3 Integer and Floating .......................................................................................................... 155
A.6.4 Floating Types ................................................................................................................... 155
A.6.5 Arithmetic Conversions ..................................................................................................... 155
A.6.6 Pointers and Integers ........................................................................................................ 156
A.6.7 Void ................................................................................................................................... 156
  4
A.6.8 Pointers to Void ................................................................................................................. 156
A.7 Expressions .............................................................................................................................. 157
A.7.1 Pointer Conversion............................................................................................................ 157
A.7.2 Primary Expressions ......................................................................................................... 157
A.7.3 Postfix Expressions ........................................................................................................... 158
A.7.4 Unary Operators ................................................................................................................ 160
A.7.5 Casts ................................................................................................................................. 161
A.7.6 Multiplicative Operators..................................................................................................... 161
A.7.7 Additive Operators............................................................................................................. 161
A.7.8 Shift Operators .................................................................................................................. 162
A.7.9 Relational Operators ......................................................................................................... 162
A.7.10 Equality Operators........................................................................................................... 163
A.7.11 Bitwise AND Operator ..................................................................................................... 163
A.7.12 Bitwise Exclusive OR Operator ....................................................................................... 163
A.7.13 Bitwise Inclusive OR Operator ........................................................................................ 163
A.7.14 Logical AND Operator ..................................................................................................... 163
A.7.15 Logical OR Operator ....................................................................................................... 164
A.7.16 Conditional Operator ....................................................................................................... 164
A.7.17 Assignment Expressions ................................................................................................. 164
A.7.18 Comma Operator............................................................................................................. 165
A.7.19 Constant Expressions ..................................................................................................... 165
A.8 Declarations .............................................................................................................................. 165
A.8.1 Storage Class Specifiers ................................................................................................... 166
A.8.2 Type Specifiers.................................................................................................................. 166
A.8.3 Structure and Union Declarations ..................................................................................... 167
A.8.4 Enumerations .................................................................................................................... 170
A.8.5 Declarators ........................................................................................................................ 170
A.8.6 Meaning of Declarators ..................................................................................................... 171
A.8.7 Initialization........................................................................................................................ 174
A.8.8 Type names....................................................................................................................... 175
A.8.9 Typedef.............................................................................................................................. 176
A.8.10 Type Equivalence............................................................................................................ 177
A.9 Statements................................................................................................................................ 177
A.9.1 Labeled Statements .......................................................................................................... 177
A.9.2 Expression Statement ....................................................................................................... 177
A.9.3 Compound Statement ....................................................................................................... 177
A.9.4 Selection Statements ........................................................................................................ 178
A.9.5 Iteration Statements .......................................................................................................... 178
A.9.6 Jump statements ............................................................................................................... 179
A.10 External Declarations.............................................................................................................. 180
A.10.1 Function Definitions......................................................................................................... 180
A.10.2 External Declarations ...................................................................................................... 181
A.11 Scope and Linkage ................................................................................................................. 182
A.11.1 Lexical Scope .................................................................................................................. 182
A.11.2 Linkage ............................................................................................................................ 182
A.12 Preprocessing......................................................................................................................... 183
A.12.1 Trigraph Sequences ........................................................................................................ 183
A.12.2 Line Splicing .................................................................................................................... 183
A.12.3 Macro Definition and Expansion ..................................................................................... 183
A.12.4 File Inclusion ................................................................................................................... 185
A.12.5 Conditional Compilation .................................................................................................. 186
A.12.6 Line Control ..................................................................................................................... 187
A.12.7 Error Generation.............................................................................................................. 187
A.12.8 Pragmas .......................................................................................................................... 187
A.12.9 Null directive .................................................................................................................... 187
A.12.10 Predefined names ......................................................................................................... 187
A.13 Grammar................................................................................................................................. 188
Appendix B - Standard Library ............................................................................................................ 194
B.1 Input and Output: <stdio.h> ...................................................................................................... 194
B.1.1 File Operations .................................................................................................................. 194
B.1.2 Formatted Output .............................................................................................................. 195
B.1.3 Formatted Input ................................................................................................................. 197
B.1.4 Character Input and Output Functions .............................................................................. 198
  5
B.1.5 Direct Input and Output Functions .................................................................................... 198
B.1.6 File Positioning Functions ................................................................................................. 198
B.1.7 Error Functions .................................................................................................................. 199
B.2 Character Class Tests: <ctype.h> ............................................................................................ 199
B.3 String Functions: <string.h>...................................................................................................... 200
B.4 Mathematical Functions: <math.h> .......................................................................................... 200
B.5 Utility Functions: <stdlib.h>....................................................................................................... 201
B.6 Diagnostics: <assert.h> ............................................................................................................ 203
B.7 Variable Argument Lists: <stdarg.h> ........................................................................................ 203
B.8 Non-local Jumps: <setjmp.h> ................................................................................................... 203
B.9 Signals: <signal.h> ................................................................................................................... 204
B.10 Date and Time Functions: <time.h> ....................................................................................... 204
B.11 Implementation-defined Limits: <limits.h> and <float.h> ........................................................ 206
Appendix C - Summary of Changes.................................................................................................... 207
Next PostNewer Post Previous PostOlder Post Home

0 comments

Post a Comment