C is an imperative compiled programming language. It’s an important starting language in computer engineering since:

  • The language interacts so closely with hardware.
  • It introduces concepts in the context of memory.
  • It requires us to implement many functions by hand.

It lacks things like objects and classes, but it does introduce finer control of memory and hardware components. Not to be confused with C++ — which is not a superset of C but closely related.

C versions are expressed by the year of release. The most common versions are C89, C99, and C11. The two dominant C compilers are GCC and Clang.

Language features

Basics

Advanced

Libraries

Tools

Internals

C runtime startup — Systeminit function before main

Development environment

An opinionated set-up:

Quick install

choco install llvm
choco install vscode

Resources

Courses