My teachers spent so much time teaching us that pointers are scary little goobers that can cause lots of problems if not used correctly, that they never bothered to show us how powerful they can really be.
For example, the concept of pointer arithmetic was foreign to me until I had already been using C++ for several years:
Examples:
- c[0] is equivalent to *c
- c[1] is equivalent to *(c + 1)
- Loop iteration: for(char* c = str; *c != '\0'; c++)
- and so on...
Rather than making students afraid to use pointers, teach them how to use them appropriately.
EDIT: As brought to my attention by a comment I just read on a different answer, I think there is also some value in discussing the subtle differences between pointers and arrays (and how to put the two together to facilitate some pretty complex structures), as well as how to properly use the const
keyword with respect to pointer declarations.