What makes C Difficult to teach?

Teaching C to beginners can be problematic due to the fact that C requires familiarity with the machine architecture in order to program with it effectively. Even programmers experienced with other, higher-level languages can hit a roadblock when faced with concepts like pointers, memory, arrays, and the stack. Tenacious C enables rapid understanding of the C programming language by depicting these concepts visually, in real-time.

Pointers

Stack

Memory

Bitfields