I remember being very confused for a time by C pointers as an undergrad in the late 80s - a situation that none of my teachers really helped with. Eventually I realised that they were just memory addresses, and a whole lot of confusion collapsed into a simple concept. I still remember what that felt like in my head.
Turned out that many of my peers had a similar experience, and not all of them got through it.
So I'm wondering yet again: why do people find C pointers so difficult to grok? Is it conceptual (indirection), notational (& and *, arrays as pointers, etc), or something else?
(Pre-uni I'd devoted a lot of effort to getting VIC and SID chips to do stuff with peek and poke commands, and writing some assembly language, which I reckon did me no harm when I first encountered C - even though I probably didn't immediately recognise the connections. I do wonder what the contemporary equivalent is.)