C Programming
This section teaches C as embedded engineers use it — not just syntax, but memory, types, data structures, and what happens between your source file and the binary on the chip.
Articles are written to be read in order. Each one explains why a concept exists before showing code. Look for "In plain terms" boxes when you want the simplest possible mental picture.
Reading order
- C types and macros — what
intanduint8_treally mean; safe#definehabits - Pointers in C — addresses,
&and*, strings, endianness - Pointers in depth — functions that change your data, arrays, callbacks
- Dynamic memory and I/O — stack vs heap, files, command-line options
- Structures and user types — struct, typedef, union, enum
- Data structures in C — lists, queues, stacks, trees
- GCC toolchain in depth — what the compiler and linker actually do
- Assembly language — reading the machine's native language
Before you start
You should know basic C: variables, if/else, loops, arrays, functions, and bit operations. If computer architecture feels new, read Foundations first — especially Data representation for bits and bytes.
After this section
- Continue with C++ programming if you want classes, RAII, and embedded C++ — it builds directly on this C material.
- Apply what you learned in Firmware architecture and System architecture for how C maps to tasks, drivers, and modules on a real board.