Pointer to Pointer in C Programming

In  C language, a pointer is an address. Normally, a pointer variable contains the address of a another variable. 

A pointer to a pointer is a chain of pointers. 

Or

Pointer to pointer means one pointer variable holds the address of another pointer variable.

Pointer to Pointer
Fig: Pointer to Pointer
Fig: Pointer to Pointer Example
#include
int main() 
{
   int a=4;
   int *b, **c;
   b = &a;
   c = &b;
   printf("\n Address of a = %d", &a);
   printf("\n Address of a = %d", b);
   printf("\n Address of a = %d", *c);

   printf("\n Address of b = %d", &b);
   printf("\n Address of b = %d", c);

  printf("\n Address of c = %d", &c);

  printf("\n Value of c = %d", c);
  printf("\n Value of c = %d", *(&c));

   printf("\n Value of b = %d", b);
   printf("\n Value of b = %d", *(&b));
   printf("\n Value of b = %d", *c);

   printf("\n Value of a = %d", a);
   printf("\n Value of a = %d", *(&a));
   printf("\n Value of a = %d", *b);
   printf("\n Value of a = %d", **c);

return 0;   
}
 Address of a = 2464
 Address of a = 2464
 Address of a = 2464
 Address of b = 2480
 Address of b = 2480
 Address of c = 2490
 Value of c = 2480
 Value of c = 2480
 Value of b = 2464
 Value of b = 2464
 Value of b = 2464
 Value of a = 4
 Value of a = 4
 Value of a = 4
 Value of a = 4