le funzioni ritornano un valore la tua funzione non lo fa!
le funzioni ritornano un valore la tua funzione non lo fa!
e anche se lo facesse, potrebbe ritornare solo un valore, non due
No, a meno di non "impacchettare" i due valori in una struttura.
codice:#include <iostream> #include <conio.h> using namespace std; struct intPair { int firstInt; int secondInt; }; intPair risultati (int* x, int* y); int main(void) { int a, b, c, d; intPair ip; cout<<"inserisci il primo numero"; cin>>a; cout<<"inserisci il secondo numero"; cin>>b; ip = risultati (&a, &b); cout<<ip.firstNumber<<endl; cout<<ip.secondNumber; getch(); } intPair risultati (int* x, int* y) { intPair ip; ip.firstNumber=*x*2; ip.secondNumber=*y*2; return ip; }
Amaro C++, il gusto pieno dell'undefined behavior.
Il modo più semplice è di usare le variabili in ingresso per i valori di uscita. (come fa la swap() )
Soluzione più elegante (e C++)codice:void risultati (int* x, int* y){ *x=*x*2; *y=*y*2; } int a=1, b=2; risultati (&a, &b); // a = 2, b = 4
codice:void risultati (int& x, int& y){ x=x*2; y=y*2; } int a=1, b=2; risultati (a, b); // a = 2, b = 4
* per il puntatore
& per l'indirizzo della variabile che stai usando o per dare un riferimento (in una funzione)
Ricapitolando i metodi sono 2:
O metti il tutto in una struttura (suggerito da MItaly) o ti fai passare come puntatore i valori che vuoi ritornare.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Quando vuoi fare una funzione con parametri di output, cerca di non usare il passaggio per riferimento, perchè dando una rapida occhiata al codice del chiamante non ci si accorge (o ci ci si dimentica) del fatto che alcuni parametri possano essere modificati, mentre con il passaggio per indirizzo tutto risulta più chiaro. (vedi gli esempi di shodan).Originariamente inviato da T. VERCETTI
ok, grazie, avrei una domanda, cm e quando si usano "*" e "&"?
Insomma, usa il passaggio per riferimento solo se risulta estremamente chiaro che quelle variabili vengono modificate dalla funzione.
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer