?
Ein 2D-Feld wie int matrix[3][3] ist kein Doppelpointer.
Zwischen
int matrix2[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
// und
int matrix1[3*3] = { 1,2,3 , 4,5,6 , 7,8,9 };
ist im Speicher kein Unterschied.
Darum
int *ppmatrix = matrix;
printf("*ppmatrix: %d", *ppmatrix);
Es gibt auch Arrays von Pointern auf Variablen (zb. argv).
Das sind dann deine Doppelpointer. Die kann man auch über die Array-Schreibweise mit den [] ansprechen.
Die werden aber anders definiert.