ubanton
30-09-2009, 10:29
Ragazzi, ho questo codice:
*Programma che scambia i valori di due parametri, versione fatta apposta per non funzionare*
#include <stdio.h>
#include <stdlib.h>
void scambia(int a, int b);
int main(int argc, char *argv[])
{
int x, y;
x=8;
y=16;
printf("Prima dello scambio\n");
printf("x=%d,y=%d\n", x, y);
scambia(x,y);
printf("Dopo lo scambio\n");
printf("x=%d,y=%d\n", x, y);
system("PAUSE");
return 0;
}
void scambia(int a, int b)
{
printf("a=%d,b=%d\n", a, b);
int temp;
temp=a;
printf("quanto vale a=%d\n",a);
a=b;
b=temp;
}
Ragà ho visto che alla fine i valori non vengono scambiati invece usando i puntatori il prog effettua lo scambio, allora vorrei capire perchè questa versione non funge, crco di spiegare i passaggi che fa una volta richiamata la funzione scambia:
-)prende i valori di x e y (parametri attuali) e li copia in a e b(par. formali) e fin qua ci siamo..
-)fa lo scambio con l'uso di una variabile di scambio temporanea a temp associa val di a poi ad a si da val di b e poi in b si prende il valore di temp(ovvero il val iniziale di a)
adesso mi spiegate cosa succede, cioè il codice non esce, non va nel main (perchè non escono i valori scambiati)?
Se mi aiutate su questo credo che riuscirò a capire gran parte del c++, visto che tutto l'esame di programmazione I si basa principalemte sul passaggio con i puntatori
*Programma che scambia i valori di due parametri, versione fatta apposta per non funzionare*
#include <stdio.h>
#include <stdlib.h>
void scambia(int a, int b);
int main(int argc, char *argv[])
{
int x, y;
x=8;
y=16;
printf("Prima dello scambio\n");
printf("x=%d,y=%d\n", x, y);
scambia(x,y);
printf("Dopo lo scambio\n");
printf("x=%d,y=%d\n", x, y);
system("PAUSE");
return 0;
}
void scambia(int a, int b)
{
printf("a=%d,b=%d\n", a, b);
int temp;
temp=a;
printf("quanto vale a=%d\n",a);
a=b;
b=temp;
}
Ragà ho visto che alla fine i valori non vengono scambiati invece usando i puntatori il prog effettua lo scambio, allora vorrei capire perchè questa versione non funge, crco di spiegare i passaggi che fa una volta richiamata la funzione scambia:
-)prende i valori di x e y (parametri attuali) e li copia in a e b(par. formali) e fin qua ci siamo..
-)fa lo scambio con l'uso di una variabile di scambio temporanea a temp associa val di a poi ad a si da val di b e poi in b si prende il valore di temp(ovvero il val iniziale di a)
adesso mi spiegate cosa succede, cioè il codice non esce, non va nel main (perchè non escono i valori scambiati)?
Se mi aiutate su questo credo che riuscirò a capire gran parte del c++, visto che tutto l'esame di programmazione I si basa principalemte sul passaggio con i puntatori