Created
August 26, 2020 18:13
-
-
Save wayou/fcea404b063b268e0975f92650714d96 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 15 | |
1.4 Symbolic Constants 17 | |
1.5 Character Input and Output 17 | |
1.5.1 File Copying 18 | |
1.5.2 Character Counting 19 | |
1.5.3 Line Counting 20 | |
1.5.4 Word Counting 21 | |
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 38 | |
2.5 Arithmetic Operators 39 | |
2.6 Relational and Logical Operators 39 | |
2.7 Type Conversions 40 | |
2.8 Increment and Decrement Operators 43 | |
2.9 Bitwise Operators 45 | |
2.10 Assignment Operators and Expressions 46 | |
2.11 Conditional Expressions 47 | |
2.12 Precedence and Order of Evaluation 48 | |
Chapter 3 - Control Flow 50 | |
3.1 Statements and Blocks 50 | |
3.2 If-Else 50 | |
3.3 Else-If 51 | |
3.4 Switch 52 | |
3.5 Loops - While and For 53 | |
3.6 Loops - Do-While 56 | |
3.7 Break and Continue 57 | |
3.8 Goto and labels 57 | |
Chapter 4 - Functions and Program Structure 59 | |
4.1 Basics of Functions 59 | |
4.2 Functions Returning Non-integers 61 | |
4.3 External Variables 63 | |
4.4 Scope Rules 68 | |
4.5 Header Files 69 | |
4.6 Static Variables 70 | |
4.7 Register Variables 71 | |
4.8 Block Structure 71 | |
4.9 Initialization 72 | |
4.10 Recursion 73 | |
4.11 The C Preprocessor 74 | |
4.11.1 File Inclusion 75 | |
4.11.2 Macro Substitution 75 | |
4.11.3 Conditional Inclusion 77 | |
Chapter 5 - Pointers and Arrays 78 | |
5.1 Pointers and Addresses 78 | |
5.2 Pointers and Function Arguments 79 | |
5.3 Pointers and Arrays 81 | |
5.4 Address Arithmetic 84 | |
5.5 Character Pointers and Functions 87 | |
5.6 Pointer Arrays; Pointers to Pointers 89 | |
5.7 Multi-dimensional Arrays 92 | |
5.8 Initialization of Pointer Arrays 93 | |
5.9 Pointers vs. Multi-dimensional Arrays 94 | |
5.10 Command-line Arguments 95 | |
5.11 Pointers to Functions 98 | |
5.12 Complicated Declarations 100 | |
Chapter 6 - Structures 105 | |
6.1 Basics of Structures 105 | |
6.2 Structures and Functions 107 | |
6.3 Arrays of Structures 109 | |
6.4 Pointers to Structures 112 | |
6.5 Self-referential Structures 113 | |
6.6 Table Lookup 117 | |
6.7 Typedef 119 | |
6.8 Unions 120 | |
6.9 Bit-fields 121 | |
Chapter 7 - Input and Output 124 | |
7.1 Standard Input and Output 124 | |
7.2 Formatted Output - printf 125 | |
7.3 Variable-length Argument Lists 127 | |
7.4 Formatted Input - Scanf 128 | |
7.5 File Access 130 | |
7.6 Error Handling - Stderr and Exit 132 | |
7.7 Line Input and Output 134 | |
7.8 Miscellaneous Functions 135 | |
7.8.1 String Operations 135 | |
7.8.2 Character Class Testing and Conversion 135 | |
7.8.3 Ungetc 135 | |
7.8.4 Command Execution 135 | |
7.8.5 Storage Management 136 | |
7.8.6 Mathematical Functions 136 | |
7.8.7 Random Number generation 136 | |
Chapter 8 - The UNIX System Interface 138 | |
8.1 File Descriptors 138 | |
8.2 Low Level I/O - Read and Write 139 | |
8.3 Open, Creat, Close, Unlink 140 | |
8.4 Random Access - Lseek 142 | |
8.5 Example - An implementation of Fopen and Getc 142 | |
8.6 Example - Listing Directories 145 | |
8.7 Example - A Storage Allocator 149 | |
Appendix A - Reference Manual 154 | |
1 Introduction 154 | |
2 Lexical Conventions 154 | |
2.1 Tokens 154 | |
2.2 Comments 154 | |
2.3 Identifiers 154 | |
2.4 Keywords 154 | |
2.5 Constants 155 | |
2.6 String Literals 156 | |
3 Syntax Notation 156 | |
4 Meaning of Identifiers 157 | |
4.1 Storage Class 157 | |
4.2 Basic Types 157 | |
4.3 Derived types 158 | |
4.4 Type Qualifiers 158 | |
5 Objects and Lvalues 158 | |
6 Conversions 159 | |
6.1 Integral Promotion 159 | |
6.2 Integral Conversions 159 | |
6.3 Integer and Floating 159 | |
6.4 Floating Types 159 | |
6.5 Arithmetic Conversions 159 | |
6.6 Pointers and Integers 160 | |
6.7 Void 160 | |
6.8 Pointers to Void 161 | |
7 Expressions 161 | |
7.1 Pointer Conversion 161 | |
7.2 Primary Expressions 161 | |
7.3 Postfix Expressions 162 | |
7.4 Unary Operators 164 | |
7.5 Casts 165 | |
7.6 Multiplicative Operators 165 | |
7.7 Additive Operators 166 | |
7.8 Shift Operators 166 | |
7.9 Relational Operators 167 | |
7.10 Equality Operators 167 | |
7.11 Bitwise AND Operator 167 | |
7.12 Bitwise Exclusive OR Operator 167 | |
7.13 Bitwise Inclusive OR Operator 168 | |
7.14 Logical AND Operator 168 | |
7.15 Logical OR Operator 168 | |
7.16 Conditional Operator 168 | |
7.17 Assignment Expressions 169 | |
7.18 Comma Operator 169 | |
7.19 Constant Expressions 169 | |
8 Declarations 170 | |
8.1 Storage Class Specifiers 170 | |
8.2 Type Specifiers 171 | |
8.3 Structure and Union Declarations 172 | |
8.4 Enumerations 174 | |
8.5 Declarators 175 | |
8.6 Meaning of Declarators 176 | |
8.7 Initialization 178 | |
8.8 Type names 180 | |
8.9 Typedef 181 | |
8.10 Type Equivalence 181 | |
9 Statements 181 | |
9.1 Labeled Statements 182 | |
9.2 Expression Statement 182 | |
9.3 Compound Statement 182 | |
9.4 Selection Statements 183 | |
9.5 Iteration Statements 183 | |
9.6 Jump statements 184 | |
10 External Declarations 184 | |
10.1 Function Definitions 185 | |
10.2 External Declarations 186 | |
11 Scope and Linkage 187 | |
11.1 Lexical Scope 187 | |
11.2 Linkage 187 | |
12 Preprocessing 187 | |
12.1 Trigraph Sequences 188 | |
12.2 Line Splicing 188 | |
12.3 Macro Definition and Expansion 188 | |
12.4 File Inclusion 190 | |
12.5 Conditional Compilation 191 | |
12.6 Line Control 192 | |
12.7 Error Generation 192 | |
12.8 Pragmas 192 | |
12.9 Null directive 192 | |
12.10 Predefined names 192 | |
13 Grammar 193 | |
Appendix B - Standard Library 200 | |
1 Input and Output: <stdio.h> 200 | |
1.1 File Operations 200 | |
1.2 Formatted Output 200 | |
1.3 Formatted Input 202 | |
1.4 Character Input and Output Functions 203 | |
1.5 Direct Input and Output Functions 204 | |
1.6 File Positioning Functions 204 | |
1.7 Error Functions 206 | |
2 Character Class Tests: <ctype.h></ctype.h> 206 | |
3 String Functions: <string.h> 206 | |
4 Mathematical Functions: <math.h> 207 | |
5 Utility Functions: <stdlib.h> 208 | |
6 Diagnostics: <assert.h> 210 | |
7 Variable Argument Lists: <stdarg.h> 210 | |
8 Non-local Jumps: <setjmp.h> 211 | |
9 Signals: <signal.h> 211 | |
10 Date and Time Functions: <time.h> 211 | |
11 Implementation-defined Limits: <limits.h> and <float.h> 213 | |
Appendix C - Summary of Changes 215 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment