If you declare:
char **myPointer;
you get a pointer pointing to a pointer.
Why would you do such a thing?
If you want for example save some characters (text) you could use a two dimensional array, or you could use a pointer to a pointer.
With the two dimensional array the longest word would "assign" your array size (so a very short word would waste memory). With a pointer to a pointer you do not waste memory! So more elegant in this case would be an array of pointers and every pointer inside of that array points to an array of char.
myPointer = calloc(2, sizeof(char*));
char pointer1[] = "hello";
char pointer2[] = "world";
*myPointer = pointer1;
*(myPointer + 1) = pointer2;
The value of *myPointer would give you the address of pointer1.
The value of of *pointer1 would give you 'h'
This would be the same: *( (*myPointer)) and would also have value: 'h'
With: *( (*myPoniter) + 1) you get as value: 'e'
And *( *(myPointer + 1) ) would return: 'w'