Out of all the introductory concepts in computer science, pointers can be the hardest to learn as well as one of the most rewarding. Pointers open up a world of possibilities allowing programmers to do things that would otherwise be extremely difficult if not impossible. This tutorial sets about to introduce pointers painlessly and familiarize you with them and the basic concepts surrounding them so that you can understand and begin to use them quickly.

In this chapter we begin by covering the topic of memory and memory addresses. Pointers are nothing more than variables that store memory addresses and can be used to access the memory at those addresses. Various operators such as the *, the &, and the [], enable us to use pointers to do these things.