Why we need Pointer-to-Pointer and Reference-to-Pointer ???
When we use "pass by pointer" to pass a pointer to a function, only a copy of the pointer is passed to the function. We can say "pass by pointer" is passing a pointer using "pass by value." In most cases, this does not present a problem. But, a problem arises when you modify the pointer inside the function. Instead of modifying the variable, it points to it by de-referencing. When you modify the pointer, you are only modifying a copy of the pointer and the original pointer remains unmodified.
Link:
http://www.codeguru.com/cpp/cpp/cpp_mfc/pointers/article.php/c4089/