## Memory-as-a-Grid Diagram ##

Usually what I do is represent memory as a "grid", so that I can make up addresses, highlight different memory spaces and write in the cells values (or even further, their binary representations) and link the pointers in memory to the values they point at.
(And then still mention that it's a simplification).

Usually it's a "ohhhh" moment for most of my students.

Sorry, cannot do you a drawing now, unfortunately.

## Symbol Juggling ##

Then when it comes to have them stop forgetting how to use & and *, it's very simple: present it the same way they do math or physics calculations. If you divide a distance in km by a time in hour, you get a speed in km/h. What's in needs to be out. Simple.

## printf to the Rescue ##

Doing just a few basic examples that visually represent what you explained with these will comfort them in what they think they understood, or give them the opportunity to say "ah, I don't get this one".

## Be Extensive ##

Cover pointers for simple types, then structs, then arrays, and multiple levels.


## Addendum: Recursion ##

I usually explain recursion similarly, using a visual representation.
Have them print the alphabet using a pre-made function that writes a single char, and then ask them to print it in reverse order by just changing two lines.

Usually there's a "what the...?" moment, and when you add just another parameter to your printf to print numeric values and indent the steps, it becomes a sigh of relief.