In questo articolo faremo alcuni esempi sul passaggio di array a funzioni.
Il passaggio di un array in C, come parametro di una funzione, avviene sempre per indirizzo, difatti non è possibile il passaggio di un array per valore.
Chi volesse inoltre consultare la lezione sugli array e puntatori lo può fare a questo link: array e puntatori.
Ricordiamo dunque che il nome di uno array è un puntatore costante.
Facciamo quindi alcuni esempi di prototipi di funzione, dove passiamo un array per indirizzo:
int f_max(int a[], int dim); //esempio di prototipo
possiamo scrivere anche: int f_max(int *a, int dim);
I due metodi sono infatti equivalenti.
Se definiamo una costante N, potremmo anche scrivere:
#define N 10
int f_max(int a[N], int dim); //esempio di prototipo
Esempio di passaggio di array a funzioni
Creiamo adesso un esempio completo a scopo didattico.
Quindi dichiariamo e definiamo due funzioni: f_max ed f_min, che calcolano rispettivamente l’elemento massimo e l’elemento minimo di un array.
Ricordiamo che possiamo fare a meno dei prototipi di funzione (dichiarazione) se le funzioni sono definite prima del main.
Consiglio anche di consultare la lezione sulle funzioni, se non avete ben chiaro questo concetto: le funzioni in C.
Ecco dunque il listato d’esempio sul passaggio di array a funzioni in C.
#include <stdio.h>
#define N 10
int f_max(int a[], int n); //prototipo di funzione
int f_min(int a[], int n); //prototipo di funzione
main(){
int i, v[N], max, min;
//inserimento elementi
for (i<0;i<N;i++) {
printf("inserisci elemento %d: ", i+1);
scanf("%d", &v[i]);
}
//stampa elementi
for (i<0;i<N;i++)
printf("%d", v[i]);
max=f_max(v,N); //invocazione della funzione f_max
printf("\nil massimo e' %d", max); //stampa del massimo
min=f_min(v,N); //invocazione della funzione f_min
printf("\nil minimo e' %d", min); //stampa del minimo
}
int f_max(int a[], int n) { //definizione di funzione
int i, max;
max=a[0];
for (i=0;i<n;i++)
if (a[i]>max)
max=a[i];
return max;
}
int f_min(int a[], int n) { //definizione di funzione
int i, min;
min=a[0];
for (i=0;i<n;i++)
if (a[i]<min)
min=a[i];
return min;
}
Nel prossimo articolo ci eserciteremo ancora con altri esempi sul passaggio di array a funzioni.
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