In questa lezione continueremo a studiare alcuni esempi di passaggio di array a funzioni, al fine di consolidare l’argomento.
Primo esempio di passaggio di array a funzioni
Quindi realizziamo un semplice programma che sviluppi due funzioni: insert che permette di inserire i dati in un array e print che invece permette di stampare i dati di un array.
In questo esempio non utilizzeremo i prototipi, ma inseriremo prima le definizioni delle funzioni insert e print, semplicemente per proporre una modalità differente da quella precedente.
La prima funzione che definiremo è dunque insert che con un semplice ciclo for permetterà l’inserimento di tutti gli elementi di un vettore v[] che è stato passato per indirizzo alla funzione.
Allo stesso modo costruiamo la funzione print.
Dopo nel main invochiamo semplicemente le nostre funzioni.
Ecco dunque il listato completo dell’esempio di passaggio di array a funzioni.
#include <stdio.h>
#define N 10
void insert(int v[]) {
int i;
for (i<0;i<N;i++) {
printf("inserisci elemento %d: ", i+1);
scanf("%d", &v[i]);
}
}
void print(int v[]) {
int i;
for (i=0; i<N; i++)
printf("%d\t", v[i]);
}
int main() {
int a[N];
insert(a);
print(a);
return 0;
}
Secondo esempio di passaggio di array a funzioni
Proviamo a variare l’esercizio precedente chiedendo quanti elementi inserire in un vettore.
Inoltre utilizziamo int *v, al posto di int v[] che come dicevamo nella precedente lezione sono due metodi equivalenti.
Sviluppiamo quindi la nostra funzione insert che questa volta, al contrario di prima, ci dovrà ritornare il numero degli elementi inseriti (n). Facciamo anche un controllo dell’input su quanti elementi inserire nell’array.
La funzione print avrà come parametri formali l’array passato per indirizzo e il numero degli elementi (n).
Ecco dunque il listato completo di un altro esempio di passaggio di array a funzioni.
#include <stdio.h>
#define N 100
int insert(int *v) { //è uguale a int v[]
int i, n;
do {
printf("Quanti elementi?");
scanf("%d", &n);
} while (n<0 || n>N);
for (i<0;i<n;i++) {
printf("inserisci elemento %d: ", i+1);
scanf("%d", &v[i]);
}
return n;
}
void print(int *v, int n) {
int i;
for (i=0; i<n; i++)
printf("%d\t", v[i]);
}
int main() {
int a[N], n;
n=insert(a);
/*attenzione chiaramente cambia anche l'invocazione della funzione, insert infatti restituisce un intero, il numero degli elementi*/
print(a, n);
return 0;
}
Chiaramente questi sono solo degli esempi molto semplici di passaggio di array a funzioni, nella prossima lezione ne faremo degli altri.
Alcuni link utili
Realizzare un menù di scelta in C
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna
Ricerca elementi in una matrice
Quali metodi per inserire dati in una matrice