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 to i. */
int  **ipp  = &ip;  /* ipp points to ip. */
int ***ippp = &ipp; /* ippp points to ipp. */
/* 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.