1. A Tutorial Introduction
1.1 Getting Started
1.2 Variables and Arithmetic Expressions
1.3 The For Statement
1.4 Symbolic Constants
1.5 Character Input and Output
1.6 Arrays
1.7 Functions
1.8 Arguments—Call by Value
1.9 Character Arrays
1.10 External Variables and Scope
2. Types, Operators, and Expressions
2.1 Variable Names
2.2 Data Types and Sizes
2.3 Constants
2.4 Declarations
2.5 Arithmetic Operators
2.6 Relational and Logical Operators
2.7 Type Conversions
2.8 Increment and Decrement Operators
2.9 Bitwise Operators
2.10 Assignment Operators and Expressions
2.11 Conditional Expressions
2.12 Precedence and Order of Evaluation
3. Control Flow
3.1 Statements and Blocks
3.2 If-Else
3.3 Else-If
3.4 Switch
3.5 Loops—While and For
3.6 Loops—Do-while
3.7 Break and Continue
3.8 Goto and Labels
4. Functions and Program Structure
4.1 Basics of Functions
4.2 Functions Returning Non-integers
4.3 External Variables
4.4 Scope Rules
4.5 Header Files
4.6 Static Variables
4.7 Register Variables
4.8 Block Structure
4.9 Initialization
4.10 Recursion
4.11 The C Preprocessor
5. Pointers and Arrays
5.1 Pointers and Addresses
5.2 Pointers and Function Arguments
5.3 Pointers and Arrays
5.4 Address Arithmetic
5.5 Character Pointers and Functions
5.6 Pointer Arrays; Pointers to Pointers
5.7 Multi-dimensional Arrays
5.8 Initialization of Pointer Arrays
5.9 Pointers vs. Multi-dimensional Arrays
5.10 Command-line Arguments
5.11 Pointers to Functions
5.12 Complicated Declarations
6. Structures
6.1 Basics of Structures
6.2 Structures and Functions
6.3 Arrays of Structures
6.4 Pointers to Structures
6.5 Self-referential Structures
6.6 Table Lookup
6.7 Typedef
6.8 Unions
6.9 Bit-fields
7. Input and Output
7.1 Standard Input and Output
7.2 Formatted Output—Printf
7.3 Variable-length Argument Lists
7.4 Formatted Input—Scanf
7.5 File Access
7.6 Error Handling—Stderr and Exit
7.7 Line Input and Output
7.8 Miscellaneous Functions
8. The UNIX System Interface
8.1 File Descriptors
8.2 Low Level I/O—Read and Write
8.3 Open, Creat, Close, Unlink
8.4 Random Access—Lseek
8.5 Example—An Implementation of Fopen and Getc
8.6 Example—Listing Directories
8.7 Example—A Storage Allocator
APPENDIX A: Reference Manual
A1. Introduction
A2. Lexical Conventions
A3. Syntax Notation
A4. Meaning of Identifiers
A5. Objects and Lvalues
A6. Conversions
A7. Expressions
A8. Declarations
A9. Statements
A10. External Declarations
A11. Scope and Linkage
A12. Preprocessing
A13. Grammar
APPENDIX B: Standard Library
B1. Input and Output:
B2. Character Class Tests:
B3. String Functions:
B4. Mathematical Functions:
B5. Utility Functions:
B6. Diagnostics:
B7. Variable Argument Lists:
B8. Non-local Jumps:
B9. Signals:
B10. Date and Time Functions:
B11. Implementation-defined Limits: and
APPENDIX C: Summary of Changes
Index