Nel caso non avessi trattato ancora l'allocazione dinamica della memoria che suggeriva antotan
(
Ho iniziato da poco con il C in ambito universitario.
)
puoi risolvere la cosa anche con una matrice statica, ma il passaggio dei parametri alla funzione va fatto diversamente: in C le matrici vengono allocate per righe in memoria, e per farlo c'è bisogno di sapere ogni riga quanto è lunga, ossia in pratica quante colonne ha la matrice (il numero di colonne si chiama appunto "Leading Dimension of Array", LDA, che in Fortran ad esempio è invece il numero di righe giacché l'allocazione avviene per colonne).
Detto questo, puoi risolvere così:
codice:
#include <stdio.h>
void riempi(int matrice[][4], int i, int j)
{
int x, y;
for (x = 0; x < i; x++) {
for (y = 0; y < j; y++) {
matrice[x][y] = x + y;
printf("%d ", matrice[x][y]);
}
putchar('\n');
}
}
int main(void)
{
int mat[4][4];
riempi(mat, 4, 4);
return 0;
}
senza contare comunque che la dimensione (o le dimensioni) statica dell'array potrebbe essere definita con una costante simbolica (direttiva #define) in maniera tale da rendere più semplice eventuali cambiamenti e anche da evitare il passaggio delle dimensioni come parametri della funzione, che risulterebbero inutili.