With hindsight, I should have realised that a youth misspent writing programs in assembler gave me nearly all the mental tools I needed
Many of us way back when had the choice of writing 1-2 K BASIC programs which were too small to do anything, and writing huge 16K programs in assembly language if we chose not to load the enormous (for the period) BASIC interpreter. That gave us a wonderland of capability.
So we learned all about pointers before we knew they were pointers. We even learned about arrays before we even knew they were arrays.
The only thing that assembly language didn't teach me about C was the existence of libraries. My first C programs were written to make functions that had already been written, debugged and standardised in libraries like clib.
Many of us way back when had the choice of writing 1-2 K BASIC programs which were too small to do anything, and writing huge 16K programs in assembly language if we chose not to load the enormous (for the period) BASIC interpreter. That gave us a wonderland of capability.
So we learned all about pointers before we knew they were pointers. We even learned about arrays before we even knew they were arrays.
The only thing that assembly language didn't teach me about C was the existence of libraries. My first C programs were written to make functions that had already been written, debugged and standardised in libraries like clib.