Chapter 1: C Standards
- Review of C standards
- K&R1 and STDC functions
- C99 inline functions
- Enumeration
- const, volatile, Boolean, and floating point types
- Limits
Chapter 2: The Preprocessor
- Predefined macros
- Conditional compilation
- Advanced directives (including assert)
- Trigraphs and C99 digraphs
- C99 Variadic macros
Chapter 3: Declarations
- Reading and writing declarations
- Using typedefs effectively
- Using casts
Chapter 4: Advanced Pointers
- Levels of indirection
- Void pointers
- Defining and using function pointers
- C99 restricted pointers
Chapter 5: Advanced Arrays
- Arrays and functions
- Pointers and arrays
- C99 Variable Length Arrays
- memset
Chapter 6: Arrays of Arrays
- Declarations
- Initialisation
- Arrays of arrays as function arguments
Chapter 7: Advanced Structures
- Declaring and defining structures
- C99 changes
- Bitfields
- Packing and padding
- Reading and writing structs to files
Chapter 8: Dynamic Memory Management
- Allocating arrays
- Allocating structures
- Error detection and debugging techniques
- Writing your own error detection library
Chapter 9: Standard Library - Process Control
- Running another process
- Process termination
- Exception handling (setjmp/longjmp)
- Environment variables
Chapter 10: Standard Library - Useful Functions
- Calling conventions
- Writing variadic functions
- Date and time functions
- Random numbers
Chapter 11: Sorting and Searching
- qsort
- Comparison functions
- Indirect sorting (pointers)
- bsearch
Chapter 12: Linked Lists
- Linked list principles
- Using recursive functions
- Implementing a circular list
- Implementing a self-adjusting list
Chapter 13: Binary Trees
- Binary tree principles
- Using trees for sorted data
- Insertion
- Deletion