1.) char** is a pointer to a pointer. The value 8092 is an address to another pointer.
2.) char* is a pointer to a char. The value 7230 is a memory address to a char.
3.) **c is the actual value being pointed to by c.
I like AbstractionAnon's explanation better. :P
Um... that's extremely imprecise, and liable to confuse you.
A pointer is a variable that holds a memory address. The type of the pointer tells the compiler how to treat the data that is held at that address. That is all.
A pointer doesn't "read" anything, and it isn't an operator. It's just a number, and that number is an address in memory.
So, the number you see in c is a memory address. If you dereference it by evaluating *c, you get the data at that address. Since c is a char**, the data at that address is a char *. In other words, the data at that address is another address - another number.
If you dereference c, by evaluating *c, you get that second address. Since *c is a char*, the data at the address is a char. If you dereference *c by evaluating **c, you get that char.
c is a char**, which means it's an address, so it's a number.
*c is a char*, which means it's an address, so it's a number.