Quindi una procedura non ritorna un valore.
Ma se io questa funzione:
codice:
bool stampa_eta(int eta)
{
bool result=false;
if(eta>=0 && eta<120)
{
cout << "Eta' : " << eta<<endl;
result=true;
}
return result;
}
La sto a tutti gli effetti usando come una procedura.Ufficialmente è una procedura o una funzione?
Originariamente inviato da corallo
....e se volete anke un kiarimento tra passaggio per riferimento e per valore...(se non erro nel riferimento e possibile fare delle modifiche sulla variabile fornita mentre per valore no)...grazie ragazzi..ma sono un po confuso sui questo argomento
Ogni volta che si chiama una procedura o una funzione passandogli dei parametri, il valore dei parametri viene copiato in altre aree di memoria,quindi se dichiaro:
codice:
void modifica(int a)
{
a=5;
}
E' a tutti gli effetti una procedura sterile, perchè a viene copiato localmente ed è un parametro formale,se lo modifico non modifico il valore originale che ho passato alla funzione, ma modifico solo la sua copia (che è temporanea, e cessa di esistere quando la procedura termina).
Se invece alla funzione gli passo un puntatore:
codice:
void modifica(int *a)
{
*a=5;
}
int main(int argc, char **argv)
{
int var;
modifica(&var);
return 0;
}
Allora si che ha effetto, perchè localmente in a viene copiato l' indirizzo di var, e quando si accede a *a, si accede al valore a cui punta a, cioè si accede al valore contenuto nell' indirizzo di var.