![Avatar](/data/images/profiles/users/default.png)
torre92 (Normal User)
Rookie
![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 22
Iscritto: 01/08/2007
|
Ciao a tutti,
purtroppo ho iniziato da poco a studiare il C e per quanto questo problema si assolutamente banale, non trovo i chiarimenti necessari su internet visto che magari è per molti scontato... Non però da chi ha iniziato a programmare con PHP, VB.NET ecc...
Dunque, un codice facilissimo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> int Scambio(int x, int y) { int t; t = x; x = y; y = t; } int main() { int a, b; printf("Inserisci il valore di A: "); scanf("%d", &a); printf("Inserisci il valore di B: "); scanf("%d", &b); Scambio(a, b); printf("\n\nValore A: %d\nValore B: %d", a, b); }
|
Ovviamente non funziona perchè non passo alla funzione il riferimento bensì solo il valore...
Come devo fare per renderlo funzionante? E' solo una cosa sintattica direi...?
Grazie mille in anticipo
|
|
![Avatar](/data/images/profiles/users/Bonny_1324585869.jpg)
Bonny (Member)
Expert
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 437
Iscritto: 24/04/2009
|
Hai capito qual' il problema:
"Ovviamente non funziona perchè non passo alla funzione il riferimento bensì solo il valore... "
Codice sorgente - presumibilmente C++ |
#include <stdio.h> int Scambio(int *x, int *y) { int t; t = *x; *x = *y; *y = t; } int main() { int a, b; printf("Inserisci il valore di A: "); scanf("%d", &a); printf("Inserisci il valore di B: "); scanf("%d", &b); Scambio(&a, &b); // N.B. printf("\n\nValore A: %d\nValore B: %d", a, b); }
|
con lìoperatore & ottengo i riferimenti al contenuto di a e b invece l'operatore * ti permette di accedere al contenuto di a e b.
Ultima modifica effettuata da Bonny il 27/02/2012 alle 18:40 |
|
![Avatar](/data/images/profiles/users/default.png)
ale.gatti96 (Member)
Pro
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 71
Iscritto: 29/11/2011
|
|
|
![Avatar](/data/images/profiles/users/default.png)
torre92 (Normal User)
Rookie
![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 22
Iscritto: 01/08/2007
|
Grazie mille a tutti e due!
Avevo capito quello degli asterischi prima della variabile ma non sapevo della & nella chiamata alla funzione, ecco perchè non ho passato l'esame di Fondamenti di Informatica I
|
|
![Avatar](/data/images/profiles/users/Bonny_1324585869.jpg)
Bonny (Member)
Expert
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 437
Iscritto: 24/04/2009
|
Postato originariamente da torre92:
Grazie mille a tutti e due!
Avevo capito quello degli asterischi prima della variabile ma non sapevo della & nella chiamata alla funzione, ecco perchè non ho passato l'esame di Fondamenti di Informatica I |
|
|
![Avatar](/data/images/profiles/users/pierotofy_1482545528.jpg)
pierotofy (Admin)
Guru^2
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png)
Messaggi: 6230
Iscritto: 04/12/2003
|
Ma perche' usare i puntatori?
Codice sorgente - presumibilmente C++ |
void swap(int &x, int &y){ int t = x; x = y; y = t; } //.... int a = 3; int b = 4; swap(a,b); // a = 4, b = 3
|
|
|
![Avatar](/data/images/profiles/users/Bonny_1324585869.jpg)
Bonny (Member)
Expert
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 437
Iscritto: 24/04/2009
|
Postato originariamente da pierotofy:
Ma perche' usare i puntatori?
Codice sorgente - presumibilmente C++ |
void swap(int &x, int &y){ int t = x; x = y; y = t; } //.... int a = 3; int b = 4; swap(a,b); // a = 4, b = 3
|
|
Piero con tutto il rispetto ma questo gcc non lo compila:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> void swap(int &x, int &y){ int t = x; x = y; y = t; } int main(){ int a=4,b=5; swap(a, b); printf("a=%d\nb=%d",a,b); return 0; }
|
|
|
![Avatar](/data/images/profiles/users/pierotofy_1482545528.jpg)
pierotofy (Admin)
Guru^2
![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png) ![](/data/images/stars/yellow.png)
Messaggi: 6230
Iscritto: 04/12/2003
|
|
|