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:

Banner Pubblicitario

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.

Banner pubblicitario

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

Strutture complesse in C

Esercizio sulle struct in C

Typedef struct C

Somma elementi diagonale principale di una matrice

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Quali metodi per inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C