Ciao a tutti. Sto studiando alcuni esercizi sul linguaggio C ma non riesco a capire una cosa. Questo è il programma:
#include <stdio.h>
#include <stdlib.h>
int leggi(int vet[], int dim) {
int i, num;
i=0;
do {
printf("Inserisci numero: ");
scanf("%d", &num);
if (num != 0) {
vet[i] = num;
i++;
}
} while (num!=0 && i<dim);
return i;
}
int trovaPos(int vet[], int dim, int el) {
int trovato, i;
trovato = -1;
for (i=0; i<dim && trovato<0; i++) {
if (vet[i] == el)
trovato = i;
}
return trovato;
}
int main(void)
{
int v[10], dim, i;
dim = leggi(v, 10);
for (i=0; i<dim; i++)
if ( trovaPos(&v[i+1], dim-i-1, v[i]) >= 0 )
if ( trovaPos(v, i, v[i]) < 0)
printf("%d ", v[i]);
system("PAUSE");
return (0);
}
Il mio dubbio riguarda la parte in grassetto. Perchè si deve usare &v[i+1] invece che v[i+1]?
Ho pensato che usando la & si va a considerare l'indirizzo della cella dell'array e non il suo contenuto, e quindi quando si va ad eguagliare (vet[i] == el) vado a confrontare un valore dell'array con un indirizzo no? Ho provato ad eseguire il programma ed effettivamente funziona con la & mentre non funziona senza. Perchè il mio ragionamento è sbagliato?
Grazie.