The C Memory Model
Pointers present us with a certain abstraction of the environment and state in which our program is executed, the C memory model. We may apply the unary operator & to (almost) all objects to retrieve their address and use it to inspect and change the state of our execution.