When I started learning C as a teen, I somehow got really stuck trying to understand pointers. That's one of the few things I now I feel I understand, but I can also still to a degree recall how it felt not to understand it.
When my main was "too big", i created another function to trim it. I did not get recursive backtracking until i really had to, and then everything lit up for me. I then became a big fan of functionnal programming after that revelation.
Random old school thought. BASIC has an unappreciated feature in that every line of code stands mostly on its own. It's either valid or it's not. In the case of C/C++ that isn't true. A line of codes validity depends on the lines before it.