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.

Banner Pubblicitario

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.

Banner pubblicitario

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