Capitolo precedente. Indice del capitolo. Indice analitico globale. Capitolo successivo.

Capitolo 3

Vettori

3.1 Introduzione.

Nella soluzione di problemi sono spesso necessarie delle variabili in grado di contenere più dati. Una di queste è il vettore. Le caratteristiche del vettore sono:

La dichiarazione del vettore avviene indicando il numero e il tipo delle componenti. Ad esempio la dichiarazione
int vet[10]
indica un vettore di 10 elementi interi consecutivi chiamati vet[0], vet[1],vet[2],...,vet[9]. Ogni elemento è di tipo int. Il primo ha come indice 0; l'ultimo 9.

Ogni vettore occupa spazio consecutivo in memeoria; l'indirizzo di partenza è indicato da una costante identificata dal nome stesso del vettore. Nell'esempio precedente la costante vet indica l'indirizzo di partenza del vettore, che coincide con l'indirizzo del primo elemento. In sostanza abbiamo che

vet = = &vet[0]

Esempio. 1 Inserire n elementi in un vettore di interi e stamparli..

3.2 Vettori e function.

Nel capitolo 2 abbiamo presentato le funzioni, abbiamo visto come si dichiarano e come avviene il passaggio di parametri. Vediamo ora come avviene la dichiarazione di una funzione che ha in ingresso come parametro un vettore. In C i dati in ingresso di una funzione sono solo di tipo scalare. Per utilizzare un vettore bisogna allora indicare alla funzione il tipo dei singoli elementi, l'indirizzo di partenza, e il numero di elementi consecutivi utilizzabili. Ad esempio la dichiarazione di una funzione che calcola il massimo di un vettore di n interi è

int massimo( int vet[], int n )

dove con int vet[] si segnala alla funzione che il primo parametro in ingresso è l'indirizzo di un vettore.

La chiamata alla funzione massimo avviene indicando l'indirizzo di partenza del vettore e il numero di elementi da considerare. Se

int a[100]; /* vettore */
int n; /* numero elementi */

la chiamata alla funzione massimo è

max=massimo( a, n );

dove a è l'indirizzo del vettore.

Si otterrebbe lo stesso risultato scrivendo

max=massimo( &a[0], n );

mentre è sbagliato scrivere

max=massimo( a[0], n ); /* errato */

In questo ultimo caso si invia alla funzione massimo il primo elemento, non l'indirizzo del primo elemento.

Ogni funzione che deve operare su di un vettore ha in ingresso l'indirizzo di partenza del vettore, il tipo degli elementi ed eventualmente il numero di elementi da considerare. In pratica la funzione opera sugli elementi originali del vettore non su copie.

Diventa allora possibile scrivere una funzione che legga dei dati inserendoli in un vettore avuto in ingresso.

Esempio. 2 Scrivere una funzione che legga e inserisca n numeri in un vettore..