Arrays of Pointers

Since variables can be pointers, it should come as no surprise that we can create arrays of pointers. We declare variables to be "pointer to int" using int *. We declare arrays using brackets ([ ] ). We can combine them to declare an "array of pointers to int" with int *pInts[5]; This declares pInts to be an array of 5 pointers to int.
that is, pInts[0] can point to some int, pInts[1] can point to another int, and so on. Pictorially, we have

One of the most common uses for arrays of pointers is an array of character pointers. Each character pointer points to a string. We can declare an array of char pointers and initialize them to essentially create an array of strings. For example

char *months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; which we can think of as looking like this:

then we can reference

months[3] to mean "April", An array of "pointers to chars" is used to pass command line arguments to your program.