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)