C/Vettori e puntatori/Puntatori: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 201:
</source>
=== Passaggio di matrici a funzione ===
UnaRicapitolando una matrice in C altro non è che nun vettore di vettore quindi viene naturale la dichiarazione:
tipo Matrice[righe][colonne];
con questa sintassi si dichiara un vettore che contiene un un numero pari a ''colonne'' di vettori che contengono un numero pari a ''righe'' di elementi di tipo ''tipo''. Colonne e righe possono essere delle costanti intere o delle variabili intere (in tal caso si hanno array dinamici caratteristica del '''C99''').
 
Per poter passare una matrice a una funzione è necessario un puntatore alla matrice che definisca il numero di colonne della matrice quindi il prototipo di una funzione che fa questo è :
tipo_restituito funzione (elenco tipi altri argomenti, tipo [][colonne]);
se il numero di colonne è variabile si usa questa sintassi
tipo_restituito funzione (elenco tipi altri argomenti, tipo [][*]);
 
Una volta definita la funzione per passarle la matrice basta passarle il mome della variabile mastrice che decade in un puntatore alla matrice stessa.
 
Stesse considerazioni valgono per vettori n-dimensionali ossia del tipo:
tipo v[i1][i2]...[iN];
dove gli indici da ''i1'' a ''iN'' possono essere costanti o variabili (standard '''C99'''), per passare a una funzione v è necessario definire un puntatore a v dove vengano definite le ultime n-1 dimensioni del vettore ossia il prototipo della funzione è:
tipo_restituito fn (elenco tipi altri argomenti, tipo [][i2]...[iN]);
se le ultime n-1 dimensioni sono variabili:
tipo_restituito fn (elenco tipi altri argomenti, tipo [][*]...[*]);
l'asterisco va solo dove la dimensione è variabile.
 
=={{IndexItem|funzioni, puntatori a}}{{IndexItem|puntatori a funzioni}}Puntatori a funzioni==