Non ho assolutamente capito come passare array multidimensionali a funzioni... o meglio, ci sono riuscito ma con un metodo che non mi sembra molto ortodosso.

Io faccio così:

codice:
void carica(int i, int j, int* a, int n, int x)
{
*(a+i*n+j)=x;
}

main()
{
int A[2][2], x, i, j;
x=0;
for (i=0; i<2; i++)
{
for (j=0; j<2; j++)
	{
	carica(i,j,&A[0][0],2,x);
	x=x+1;
	}
}
exit(0);
}
cioè passo l'indirizzo di A[0][0] e poi trovo l'elemento (i,j) come *(&A[0][0]+i*n+j) dove n=numero di colonne.

C'è un metodo un po' più semplice ed elegante per fare la stessa cosa?


E un'altra domanda: come faccio a passare come parametri valore un array, che sia monodimensionale o multidimensionale, ad una function?

la dichiarazione della function la conosco ( void f(int a[]) - void f(int a[][10]) ) ma non ho capito come si richiama la funzione


Grazie e