Pointers. I'm totally 100% unsure why now, I think they must have been explained really poorly, but I didn't get them at all at first.
This too. The course I taught went full on Java so the C++ type pointers were no longer used. But as long as C++ was around I struggled with getting the right resources to help students with it.
In my college experience, I think pointers were just introduced too early in the curriculum. Students are barely able to grasp the fundamentals of control flow and scope, are just starting to learn about types, and are then thrown in the deep end with pointers. Until you really understand types and good variable scoping, pointers will make no sense.
In my opinion there are two main issues: C uses fucking awful syntax for pointers which is always a stumbling block when trying to learn something.
The second is that most explanations only tell you what pointers are, not what they're used/useful for.
The, "used/useful for", bit being particularly key there.
People often hate or love C++. It is certainly a complicated language. But I love it because it really showed me how data is truly represented in memory. Not only C++, you go with assembly and will get references, pointers and everything else. In the end there are no pointers and references, only memory addresses :)
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.