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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<stdio.h> 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; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |