Se allochi l'array staticamente, quindi sai a compile time le dimensioni:
codice:
#define ROWS 10
#define COLUMNS 10
void fun(tipo array[ROWS][COLUMNS]);
quindi nel main dichiari un array:
codice:
tipo array[ROW][COLUMNS];
e invochi la funzione:
Se allochi dinamicamente l'array:
codice:
void fun(tipo **array, int rows, int cols){
...
...
...
}
quindi crei il vettore e chiami la funzione:
codice:
tipo ** array = (tipo**)malloc(rows * sizeof(tipo *));
for(int i = 0; i < cols; i++)
array[i] = (tipo *)malloc(cols * sizeof(tipo));
//eventuale codice per inizializzare gli elementi dell'array
//...
fun(array, roes, cols)
In C++ puoi anche usare new per allocare l'array e avere un puntatore al primo elemento.