A pointer may point to variable which itself holds another pointer, and this is expressed in the pointer's type:
int i; /*i
holds an integer. */ int *ip = &i; /*ip
points toi
. */ int **ipp = &ip; /*ipp
points toip
. */ int ***ippp = &ipp; /*ippp
points toipp
. */ /* et cetera */
The fact that the pointed-to object also holds a pointer does not fundamentally change the behaviour of the pointer that points to it. It just allows a further level of indirection — in practice, you rarely need more than a couple of levels.