Passando uma matriz multidimensional de tamanho variável

Estou tentando entender o que é "melhor prática" (ou realmente qualquer prática) para passar uma matriz multidimensional para uma função em c is. Certamente isso depende do aplicativo, então vamos considerar escrever uma função para imprimir uma matriz 2D de tamanho variável. Em particular, estou interessado em como alguém escreveria a funçãoprintArry(__, int a, int b) no código a seguir. Omiti o primeiro parâmetro, pois não sei exatamente o que deve 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);

}

questionAnswers(2)

yourAnswerToTheQuestion