Passaggi di parametri per riferimento (c++)
Buongiorno ,
studio ingegneria e sono alle prime armi col c++ e con l'informatica in generale . Avrei un dubbio riguardo il passaggio dee paametri per riferimento nelle funzioni.
H capito il passaggio dei parametri per valore , qui ho un esempio :
#include
using namespace std;
int raddoppia (int n){
n=n*2;
return n;
}
int main (){
int x;
cout<<"Inserisci un numero\n";
cin>>x;
int y=raddoppia(x);
cout<<"Il numero raddoppiato e'"<
system ("PAUSE");
return 0;
}
Ma l'altro non l'ho capito ; so che bisogna usare il simbolo &(and) però non ho capito molto bene la teoria. Qualcuno mi potrebbe gentilmente spiegare compe potrei usare questo tipo di passaggio nel codice che ho postato ?
Grazie
studio ingegneria e sono alle prime armi col c++ e con l'informatica in generale . Avrei un dubbio riguardo il passaggio dee paametri per riferimento nelle funzioni.
H capito il passaggio dei parametri per valore , qui ho un esempio :
#include
using namespace std;
int raddoppia (int n){
n=n*2;
return n;
}
int main (){
int x;
cout<<"Inserisci un numero\n";
cin>>x;
int y=raddoppia(x);
cout<<"Il numero raddoppiato e'"<
return 0;
}
Ma l'altro non l'ho capito ; so che bisogna usare il simbolo &(and) però non ho capito molto bene la teoria. Qualcuno mi potrebbe gentilmente spiegare compe potrei usare questo tipo di passaggio nel codice che ho postato ?
Grazie

Risposte
Passando una variabile come riferimento, si permette alla funzione di cambiarne il valore. Invece che mostrarti il tuo codice te ne mostro un altro in cui è necessario usare il passaggio per riferimento. Supponi di voler scrivere una funzione che scambia i valori contenuti in due variabili, per esempio intere. Con il passaggio per valore questo è impossibile, ma usando quello per riferimento si può scrivere qualcosa come il seguente (il codice non l'ho testato ma dovrebbe essere corretto):
#include <iostream> void swap(int& a, int& b) { int t = a; a = b; b = t; } int main(void) { int a = 5; int b = 3; std::cout << "(a, b) = (" << a << ", " << b << ")\n"; swap(a, b); std::cout << "(a, b) = (" << a << ", " << b << ")\n"; }
& ha due significati, e il significato dipende dal contesto.
Se usato in un assegnamento si riferisce all' indirizzo di quella variabile.
Se usato in un' espressione si riferisce all' and logico.
Esempio:
Se usato in un assegnamento si riferisce all' indirizzo di quella variabile.
Se usato in un' espressione si riferisce all' and logico.
Esempio:
char *p; char a; char b; char c; p=&c; // si riferisce all' indirizzo della variabile c c=a&c; // si riferisce all' and logico, non avrebbe senso interpretarlo come un indirizzo
"ramy1989":
Se usato in un' espressione si riferisce all' and logico.
attento...
&si riferisce all'operatore bit a bit
&&si riferisce all'and logico ${true,false}$

Si, ok (mi ero distratto)
