Pasar una matriz multidimensional de tamaño variable

Estoy tratando de entender qué es la "mejor práctica" (o realmente cualquier práctica) para pasar una matriz multidimensional a una función en c. Ciertamente, esto depende de la aplicación, así que consideremos escribir una función para imprimir una matriz 2D de tamaño variable. En particular, estoy interesado en cómo se escribiría la funciónprintArry(__, int a, int b) en el siguiente código. He omitido el primer parámetro ya que no estoy exactamente seguro de qué debería ser.

void printArry(_____, int a, int b){
/* what goes here? */
}


int main(int argc, char** argv){

int a1=5;
int b1=6;
int a2=7;
int a2=8;

int arry1[a1][b1];
int arry2[a2][b2];

/* set values in arrays */

printArry(arry1, a1, b1);
printArry(arry2, a2, b2);

}