È una predisposizione ad una matrive dinamica. Siccome la matrice è m[r][c] la stessa è equivalente a (*m)[r] oppure **m. La diferenza è che nel caso del doppio puntatore non specifichi la dimensione ne di riga ne di colonna.
Ecco un esempio:
//implementi la matrice con dimensione ignota
int **M;
//prendi la dimensione dall'input (scelta utente)
cin >> d;
//applichi la dimensione alla matrice
int i = 0;
M = new (int *)[d];
for(i = 0; i < d; i++)
M[i] = new int[d];
//alla fine del programma liberi i blocchi di memoria che hai occupato
for(i = 0; i< d; i++)
delete [] M[i];
delete [] M;