Return è una
keyword che serve a restituire un 'qualcosa' alla funzione chiamante. Quando leggi
return 0 semplicemente restituisce 0. La funzione
main necessaria all'esecuzione del tuo programma
deve restituire un valore perchè nel suo
prototype è definito. Se ometto la parola chiave
return il complilatore mi 'segnala' che non ritorna il valore; per cui, se ho una funzione che chiamo '
foo' e la definisco:
int foo ()
{
int valore_da_restituire;
/*
corpo della funzione
bla bla & blabla
valore_da_restituire = (bla+blabla-pingpong);
*/
return (valore_da_restituire);
}
mi aspetto che essa restituisca un valore
intero. Se anzichè
int ho
float devo riceve un
float ecc...ma se io definisco il tipo
void non mi aspetto niente indietro.
Nella definizione della funzione, posso anche stabile se essa dovrà ricevere qualcosa dal chiamante; in questo caso lo devo definire, cioè devo indicare i parametri come riceve e il tipo di dato associato. Esempio:
int foo (int valore)
{
int valore_da_restituire;
/*
corpo della funzione
bla bla & blabla vvvv
valore_da_restituire = valore + (bla+blabla-pingpong);
*/
return (valore_da_restituire);
}
Un esempio completo chiamate-funzione è:
int foo (int val)
{
val=val+1;
return val;
}
int main ()
{
int y,z;
y=3;
z=foo (y);
return 0;
}
Vediamo nel dettaglio cosa succede...
la funzione
main definisce 2 variabili (
y e
z) e inizializza
y=3. Queste variabili sono
locali, vengono viste solo dalla funzione
main. Quando chiamo la funzione
foo gli passo il valore della mia
y (3) ed attendo che mi restituisca un'altro valore che andrò a memorizzare nella variabile
z... a questo punto
foo legge il valore che la funzione
main gli sta passando e lo registra in una sua variabile locale che chiamiamo
val. (nota che
val e
y non hanno niente in comune se non lo stesso valore - entrambe valgono 3 -), incremento
val di uno ed uso '
return' per restituire il valore della variabile -ora è 4-... ecco che
main assegna alla sua variabile
z il valore restituito da foo.
Se questo è chiaro fai delle prove.. quando sei veramente illuminato proseguo a spiegarti il resto
uoos n ??s,
Max