The C Programming Language.pdf

(728 KB) Pobierz
1
754067519.001.png
2
Preface ........................................................................................................................................ 6
Preface to the first edition .......................................................................................................... 8
Chapter 1 - A Tutorial Introduction ........................................................................................... 9
1.1 Getting Started.................................................................................................................. 9
1.2 Variables and Arithmetic Expressions ........................................................................... 11
1.3 The for statement............................................................................................................ 16
1.4 Symbolic Constants........................................................................................................ 17
1.5 Character Input and Output ............................................................................................ 18
1.5.1 File Copying............................................................................................................ 18
1.5.2 Character Counting ................................................................................................. 20
1.5.3 Line Counting.......................................................................................................... 21
1.5.4 Word Counting........................................................................................................ 22
1.6 Arrays ............................................................................................................................. 23
1.7 Functions ........................................................................................................................ 25
1.8 Arguments - Call by Value ............................................................................................. 28
1.9 Character Arrays ............................................................................................................ 29
1.10 External Variables and Scope ...................................................................................... 31
Chapter 2 - Types, Operators and Expressions ........................................................................ 35
2.1 Variable Names.............................................................................................................. 35
2.2 Data Types and Sizes ..................................................................................................... 35
2.3 Constants ........................................................................................................................ 36
2.4 Declarations .................................................................................................................... 39
2.5 Arithmetic Operators ...................................................................................................... 40
2.6 Relational and Logical Operators................................................................................... 40
2.7 Type Conversions ........................................................................................................... 41
2.8 Increment and Decrement Operators.............................................................................. 44
2.9 Bitwise Operators ........................................................................................................... 46
2.10 Assignment Operators and Expressions ....................................................................... 47
2.11 Conditional Expressions ............................................................................................... 49
2.12 Precedence and Order of Evaluation............................................................................ 49
Chapter 3 - Control Flow ......................................................................................................... 52
3.1 Statements and Blocks ................................................................................................... 52
3.2 If-Else............................................................................................................................. 52
3.3 Else-If............................................................................................................................. 53
3.4 Switch............................................................................................................................. 54
3.5 Loops - While and For ................................................................................................... 56
3.6 Loops - Do-While........................................................................................................... 58
3.7 Break and Continue ........................................................................................................ 59
3.8 Goto and labels ............................................................................................................... 60
Chapter 4 - Functions and Program Structure .......................................................................... 62
4.1 Basics of Functions ........................................................................................................ 62
4.2 Functions Returning Non- integers ................................................................................. 65
4.3 External Variables.......................................................................................................... 67
4.4 Scope Rules.................................................................................................................... 72
4.5 Header Files.................................................................................................................... 73
4.6 Static Variables .............................................................................................................. 75
4.7 Register Variables .......................................................................................................... 75
4.8 Block Structure............................................................................................................... 76
4.9 Initialization ................................................................................................................... 76
4.10 Recursion...................................................................................................................... 78
4.11 The C Preprocessor ...................................................................................................... 79
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................................................................................ 150
8.1 File Descriptors ............................................................................................................ 150
8.2 Low Level I/O - Read and Write.................................................................................. 151
8.3 Open, Creat, Close, Unlink .......................................................................................... 152
8.4 Random Access - Lseek ............................................................................................... 154
8.5 Example - An implementation of Fopen and Getc....................................................... 155
8.6 Example - Listing Directories ...................................................................................... 158
8.7 Example - A Storage Allocator .................................................................................... 162
Appendix A - Reference Manual ........................................................................................... 167
A.1 Introduction................................................................................................................. 167
4
A.2 Lexical Conventions .................................................................................................... 167
A.2.1 Tokens .................................................................................................................. 167
A.2.2 Comments............................................................................................................. 167
A.2.3 Identifiers.............................................................................................................. 167
A.2.4 Keywords.............................................................................................................. 168
A.2.5 Constants .............................................................................................................. 168
A.2.6 String Literals ....................................................................................................... 170
A.3 Syntax Notation........................................................................................................... 170
A.4 Meaning of Identifiers................................................................................................. 170
A.4.1 Storage Class ........................................................................................................ 170
A.4.2 Basic Types .......................................................................................................... 171
A.4.3 Derived types........................................................................................................ 172
A.4.4 Type Qualifiers ..................................................................................................... 172
A.5 Objects and Lvalues .................................................................................................... 172
A.6 Conversions ................................................................................................................. 172
A.6.1 Integral Promotion................................................................................................ 173
A.6.2 Integral Conversions ............................................................................................. 173
A.6.3 Integer and Floating.............................................................................................. 173
A.6.4 Floating Types ...................................................................................................... 173
A.6.5 Arithmetic Conversions ........................................................................................ 173
A.6.6 Pointers and Integers ............................................................................................ 174
A.6.7 Void ...................................................................................................................... 175
A.6.8 Pointers to Void.................................................................................................... 175
A.7 Expressions .................................................................................................................. 175
A.7.1 Pointer Conversion............................................................................................... 176
A.7.2 Primary Expressions............................................................................................. 176
A.7.3 Postfix Expressions .............................................................................................. 176
A.7.4 Unary Operators ................................................................................................... 178
A.7.5 Casts ..................................................................................................................... 180
A.7.6 Multiplicative Operators....................................................................................... 180
A.7.7 Additive Operators ............................................................................................... 181
A.7.8 Shift Operators ..................................................................................................... 181
A.7.9 Relational Operators ............................................................................................. 182
A.7.10 Equality Operators.............................................................................................. 182
A.7.11 Bitwise AND Operator ....................................................................................... 182
A.7.12 Bitwise Exclusive OR Operator ......................................................................... 183
A.7.13 Bitwise Inclusive OR Operator .......................................................................... 183
A.7.14 Logical AND Operator ....................................................................................... 183
A.7.15 Logical OR Operator.......................................................................................... 183
A.7.16 Conditional Operator .......................................................................................... 183
A.7.17 Assignment Expressions ..................................................................................... 184
A.7.18 Comma Operator ................................................................................................ 184
A.7.19 Constant Expressions ......................................................................................... 185
A.8 Declarations ................................................................................................................. 185
A.8.1 Storage Class Specifiers ....................................................................................... 186
A.8.2 Type Specifiers ..................................................................................................... 187
A.8.3 Structure and Union Declarations ........................................................................ 187
A.8.4 Enumerations ........................................................................................................ 190
A.8.5 Declarators............................................................................................................ 191
A.8.6 Meaning of Declarators........................................................................................ 192
A.8.7 Initialization.......................................................................................................... 195
A.8.8 Type names........................................................................................................... 197
5
A.8.9 Typedef................................................................................................................. 198
A.8.10 Type Equivalence............................................................................................... 198
A.9 Statements ................................................................................................................... 198
A.9.1 Labeled Statements............................................................................................... 199
A.9.2 Expression Statement ........................................................................................... 199
A.9.3 Compound Statement ........................................................................................... 199
A.9.4 Selection Statements............................................................................................. 200
A.9.5 Iteration Statements .............................................................................................. 200
A.9.6 Jump statements ................................................................................................... 201
A.10 External Declarations ................................................................................................ 202
A.10.1 Function Definitions........................................................................................... 202
A.10.2 External Declarations ......................................................................................... 203
A.11 Scope and Linkage .................................................................................................... 204
A.11.1 Lexical Scope ..................................................................................................... 204
A.11.2 Linkage ............................................................................................................... 205
A.12 Preprocessing............................................................................................................. 205
A.12.1 Trigraph Sequences ............................................................................................ 206
A.12.2 Line Splicing ...................................................................................................... 206
A.12.3 Macro Definition and Expansion ....................................................................... 206
A.12.4 File Inclusion...................................................................................................... 208
A.12.5 Conditional Compilation.................................................................................... 209
A.12.6 Line Control ....................................................................................................... 210
A.12.7 Error Generation................................................................................................. 210
A.12.8 Pragmas .............................................................................................................. 211
A.12.9 Null directive ...................................................................................................... 211
A.12.10 Predefined names ............................................................................................. 211
A.13 Grammar.................................................................................................................... 211
Appendix B - Standard Library.............................................................................................. 219
B.1 Input and Output: <stdio.h> ........................................................................................ 219
B.1.1 File Operations ..................................................................................................... 219
B.1.2 Formatted Output .................................................................................................. 221
B.1.3 Formatted Input .................................................................................................... 222
B.1.4 Character Input and Output Functions .................................................................. 224
B.1.5 Direct Input and Output Functions ....................................................................... 224
B.1.6 File Positioning Functions .................................................................................... 225
B.1.7 Error Functions ..................................................................................................... 225
B.2 Character Class Tests: <ctype.h> ................................................................................ 225
B.3 String Functions: <string.h> ........................................................................................ 226
B.4 Mathematical Functions: <math.h> ............................................................................. 227
B.5 Utility Functions: <stdlib.h> ....................................................................................... 228
B.6 Diagnostics: <assert.h> ................................................................................................ 230
B.7 Variable Argument Lists: <stdarg.h> .......................................................................... 230
B.8 Non- local Jumps: <setjmp.h> ...................................................................................... 231
B.9 Signals: <signal.h> ...................................................................................................... 231
B.10 Date and Time Functions: <time.h> .......................................................................... 232
B.11 Implementation-defined Limits: <limits.h> and <float.h>
............................................................................................................................................ 233
Appendix C - Summary of Changes ...................................................................................... 235
Zgłoś jeśli naruszono regulamin