C.BOOKLET
Get the Booklet
20 chapters · Bell Labs 1969 → C23

C, traced from the metal up

A single booklet that starts where C itself started — a PDP-11 at Bell Labs — and ends at dynamic memory allocation. Every keyword, every loop, every pointer, explained in the order you'd actually need them.

20 chapters
9 language standards covered, K&R → C23
1 file, cover to conclusion
FIG. 14 — POINTER DEREFERENCE MEMORY (int x = 10;) 0x1000 0x1004 0x1008 0x100C x = 10 POINTER (int *ptr = &x;) ptr holds → 0x1004 > printf("%d", *ptr); 10_
Every value in a running program lives in a numbered mailbox. ptr doesn't hold 10 — it holds the address where 10 lives. Chapter 14 builds this model from scratch.
§ WHY C

Still the floor everything else stands on

Every language you learn after this one borrows from it — the braces, the semicolons, the idea of a function. C is where those ideas were first cast in a compiler, and understanding it changes how you read every other language.

CLOSE TO THE HARDWARE

Pointers give you the memory address itself, not an abstraction over it — the same access an operating system or a device driver needs.

PORTABLE BY DESIGN

The reason Unix could move off the PDP-11 in 1973 is the same reason a C program compiles on almost any architecture today.

THE COMMON ANCESTOR

C++, Java, C#, JavaScript, Go, and Rust all inherit its syntax for expressions, loops, and functions — learn it once, recognize it everywhere.

§ CH.2

What actually happens when you compile

Before the first chapter on syntax, the booklet walks through the four stages every .c file passes through — so a "linker error" stops being a mystery.

01Source (.c)
02Preprocessor
03Compiler
04Assembler
05Linker
06Executable
§ CONTENTS

Twenty chapters, four parts

Structured to be read in order — each part builds the vocabulary the next one assumes.

PART I Origins & Anatomy
01History of C
02Introduction & Features
03Program Structure
04Keywords & Identifiers
05Data Types
PART II Expressing Logic
06Variables & Constants
07Operators
08Input & Output
09Control Flow & switch
10Loops
PART III Structuring Data
11Arrays
12Strings
13Functions
14Pointers
15Structures, Unions & Enums
PART IV Systems & Practice
16Storage Classes
17The Preprocessor
18File Handling
19Dynamic Memory Allocation
20Where To Go From Here
§ AUDIENCE

Who this is for

If you're starting from zero

Every chapter assumes only the one before it. History and compilation come first on purpose, so "int main(void)" means something before you're asked to type it.

If you already know another language

Skip ahead to Part III. Pointers, manual memory management, and the absence of a garbage collector are where C diverges hardest from Python, Java, or JavaScript — and where most of the useful mental model lives.

Start at 0x0000

One document, cover to conclusion — history, syntax, memory, and a reading list for where to go next.

Download the Booklet (.pdf)
$ ./read_booklet --from-chapter=1_