¿C o C++?
----
En el caso de C cuando una función se declara en cualquiera de las dos formas:
int fn(int a[]);
/* O bien: */
int fn(int a[123]);
En realidad se procesa así:
int fn(int *a);
Y cuando se llama a la función pasando como argumento el nombre de un array este se sustituye por la dirección en memoria de su primer elemento. Por ello no es necesario (ni se recomienda) indicar el numero de elementos del array (no tiene caso).
----
Lo que tu llamas "matriz" solo es un array y por ende no debes indicar el numero de elementos (filas), debes indicar el numero de columnas porque ello es parte del
tipo de cada elemento del array.
Para explicarlo mejor un ejemplo en C utilizando alias:
#include <stdio.h>
#include <stdlib.h>
/* array_10_int == array de 10 elementos de tipo int */
typedef int array_10_int[10];
void fn(array_10_int array[1000], size_t num_elem);
int main(void)
{
array_10_int a[10];
size_t num_elem = sizeof a / sizeof a[0];
int i;
int j;
for (i = 0; i < num_elem; i++)
for (j = 0; j < 10; j++)
a[i][j] = i * 10 + j;
fn(a, num_elem);
return EXIT_SUCCESS;
}
void fn(array_10_int array[], size_t num_elem)
{
size_t i;
size_t j;
for (i = 0; i < num_elem; i++){
for (j = 0; j < 10; j++)
}
}
Un saludo