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
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 112
6.1 Basics of Structures 112
6.2 Structures and Functions 112
6.3 Arrays of Structures 112
6.4 Pointers to Structures 112
6.5 Self-referential Structures 112
6.6 Table Lookup 112
6.7 Typedef 112
6.8 Unions 112
6.9 Bit-fields 112
Chapter 7 - Input and Output 112
7.1 Standard Input and Output 112
7.2 Formatted Output - printf 112
7.3 Variable-length Argument Lists 112
7.4 Formatted Input - Scanf 112
7.5 File Access 112
7.6 Error Handling - Stderr and Exit 112
7.7 Line Input and Output 112
7.8 Miscellaneous Functions 112
7.8.1 String Operations 112
7.8.2 Character Class Testing and Conversion 112
7.8.3 Ungetc 112
7.8.4 Command Execution 112
7.8.5 Storage Management 112
7.8.6 Mathematical Functions 112
7.8.7 Random Number generation 112
Chapter 8 - The UNIX System Interface 112
8.1 File Descriptors 112
8.2 Low Level I/O - Read and Write 112
8.3 Open, Creat, Close, Unlink 112
8.4 Random Access - Lseek 112
8.5 Example - An implementation of Fopen and Getc 112
8.6 Example - Listing Directories 112
8.7 Example - A Storage Allocator 112
Appendix A - Reference Manual 112
A.1 Introduction 112
A.2 Lexical Conventions 112
A.2.1 Tokens 112
A.2.2 Comments 112
A.2.3 Identifiers 112
A.2.4 Keywords 112
A.2.5 Constants 112
A.2.6 String Literals 112
A.3 Syntax Notation 112
A.4 Meaning of Identifiers 112
A.4.1 Storage Class 112
A.4.2 Basic Types 112
A.4.3 Derived types 112
A.4.4 Type Qualifiers 112
A.5 Objects and Lvalues 112
A.6 Conversions 112
A.6.1 Integral Promotion 112
A.6.2 Integral Conversions 112
A.6.3 Integer and Floating 112
A.6.4 Floating Types 112
A.6.5 Arithmetic Conversions 112
A.6.6 Pointers and Integers 112
A.6.7 Void 112
A.6.8 Pointers to Void 112
A.7 Expressions 112
A.7.1 Pointer Conversion 112
A.7.2 Primary Expressions 112
A.7.3 Postfix Expressions 112
A.7.4 Unary Operators 112
A.7.5 Casts 112
A.7.6 Multiplicative Operators 112
A.7.7 Additive Operators 112
A.7.8 Shift Operators 112
A.7.9 Relational Operators 112
A.7.10 Equality Operators 112
A.7.11 Bitwise AND Operator 112
A.7.12 Bitwise Exclusive OR Operator 112
A.7.13 Bitwise Inclusive OR Operator 112
A.7.14 Logical AND Operator 112
A.7.15 Logical OR Operator 112
A.7.16 Conditional Operator 112
A.7.17 Assignment Expressions 112
A.7.18 Comma Operator 112
A.7.19 Constant Expressions 112
A.8 Declarations 112
A.8.1 Storage Class Specifiers 112
A.8.2 Type Specifiers 112
A.8.3 Structure and Union Declarations 112
A.8.4 Enumerations 112
A.8.5 Declarators 112
A.8.6 Meaning of Declarators 112
A.8.7 Initialization 112
A.8.8 Type names 112
A.8.9 Typedef 112
A.8.10 Type Equivalence 112
A.9 Statements 112
A.9.1 Labeled Statements 112
A.9.2 Expression Statement 112
A.9.3 Compound Statement 112
A.9.4 Selection Statements 112
A.9.5 Iteration Statements 112
A.9.6 Jump statements 112
A.10 External Declarations 112
A.10.1 Function Definitions 112
A.10.2 External Declarations 112
A.11 Scope and Linkage 112
A.11.1 Lexical Scope 112
A.11.2 Linkage 112
A.12 Preprocessing 112
A.12.1 Trigraph Sequences 112
A.12.2 Line Splicing 112
A.12.3 Macro Definition and Expansion 112
A.12.4 File Inclusion 112
A.12.5 Conditional Compilation 112
A.12.6 Line Control 112
A.12.7 Error Generation 112
A.12.8 Pragmas 112
A.12.9 Null directive 112
A.12.10 Predefined names 112
A.13 Grammar 112
Appendix B - Standard Library 112
B.1 Input and Output: <stdio.h> 112
B.1.1 File Operations 112
B.1.2 Formatted Output 112
B.1.3 Formatted Input 112
B.1.4 Character Input and Output Functions 112
B.1.5 Direct Input and Output Functions 112
B.1.6 File Positioning Functions 112
B.1.7 Error Functions 112
B.2 Character Class Tests: <ctype.h> 112
B.3 String Functions: <string.h> 112
B.4 Mathematical Functions: <math.h> 112
B.5 Utility Functions: <stdlib.h> 112
B.6 Diagnostics: <assert.h> 112
B.7 Variable Argument Lists: <stdarg.h> 112
B.8 Non-local Jumps: <setjmp.h> 112
B.9 Signals: <signal.h> 112
B.10 Date and Time Functions: <time.h> 112
B.11 Implementation-defined Limits: <limits.h> and <float.h> 112
Appendix C - Summary of Changes 112
Downloads
The_C_Programming_Language_Ritchie_&_Kernighan.doc
|