Created
June 29, 2016 06:50
-
-
Save meditans/269662ac4f0bad3a9f5684176515acc5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream> | |
using namespace std; | |
void raddoppiaByReference(int &m) | |
{ | |
m=2*m; | |
} | |
int raddoppiaByValue(int m) | |
{ | |
return 2*m; | |
} | |
int main() | |
{ | |
// q è un intero | |
int q = 3; | |
// r è un puntatore ad intero, inizializzato con l'indirizzo di q. Ricorda che | |
// nelle definizioni, "int *ptr" vuol dire che ptr è puntatore ad un intero, | |
// mentre nelle espressioni, "*ptr" indica il valore della variabile a cui | |
// punta ptr. | |
int *r = &q; | |
// s è un alias, ovvero un altro nome per q, e ne condivide anche l'indirizzo | |
// (cambiando s cambia q). Ricorda che nelle definizioni, "int &s" vuol dire | |
// che s è un altro nome per una variabile di tipo int, mentre nelle | |
// espressioni, "&q" vuol dire l'indirizzo di q. | |
int &s = q; | |
// Qui di seguito metto i valori stampati, una volta usando il sinonimo e | |
// l'altra usando la deferenziazione del puntatore. Stampa 3 3 | |
cout << s << " " << *r << endl; | |
// Stampa ancora 3 | |
cout << q << endl; | |
// Questo non stampa niente, ma raddoppia la q del main (perché è passata by | |
// reference) | |
raddoppiaByReference(q); | |
// Quindi questo adesso stampa 6 | |
cout << q << endl; | |
// Infine, il valore di ritorno di raddoppiaByValue è 12, perché è il doppio di 6 (ma q | |
// non viene modificata, perché è pass by value). Stampa 12 | |
cout << raddoppiaByValue(q) << endl; | |
// Qui q vale ancora 6, e lo stampo | |
cout << q << endl; | |
// Incremento s, che è un sinonimo per parlare di q | |
s++; | |
// Adesso questo stampa 7 | |
cout << q << endl; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment