Un puntatore, oltre ad essere un indirizzo, e' anche un valore (un numero). E quindi e' contenuto in una zona di memoria. Questa zona di memoria ha, a sua volta, un indirizzo (il puntatore al puntatore ...).

Quando scrivi

int **p;

hai "creato" un puntatore ad un puntatore ... e' indifferente che il puntatore a cui si punta esista o no a questo punto ... e' importante che esista quando lo si usera'.