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ì:
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.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; }

Rispondi quotando