> I'm sure many people here got into programming precisely because abstract thinking came easily to them.
Counter here: When I wanted to switch from TurboPascal during school (14y/15y) to C++ (because it was "more cool" and that was the tool that the 'big boy' game-dev-pros were, we thought), it was so damn hard for me - really! I was struggling so massivly, I head massive problems with this pointer stuff - it took me years to fully understand it.
And I was hell-bad at math in school (or maybe just too lazy), the only thing to which I a relation was all this geometric stuff (because this was needed for .. game dev! :-D )
Pointers are famously difficult to learn and reason about even though the basic principles are simple. Programming in a style that requires direct manipulation of pointers when it's not actually necessary is usually regarded as unwise because it's so hard to get right.
OP had no problem with pointers prior to trying C++. I think there is a case to be made that C(++) makes pointers unnecessarily confusing and there is no real disconnect between understanding pointers in theory and in practice otherwise
And C++ makes everything extra confusing with the capability of operator overloading.
That has to be one of the worst features ever added to a language.
> I head massive problems with this pointer stuff
no, OP explicitly had problem after getting introduced to pointer concept
Pointers aren't hard, it's C/C++ that make them complicated. Addresses and indirection in any assembly language are simple and straightforward, easy and even intuitive once you start actually writing programs.
Tell that to the thousands of comp sci students who drop out every year because they don't like programming in C!
...thats the reason why I love managed environments like C#/Java/etc :-))