Quote:
Originariamente inviato da phantom85
Ciao a tutti,
ho scritto un breve programma in C in cui c'è una funzione che passati due interi, scambia il contenuto delle due variabili e restituisce il puntatore al valore più grande.
Ho anche scritto un main per testarlo inizializzando le variabili.
Il problema è che nell'esecuzione da shell mi dà segmentation fault, mentre sul pc di un mio amico lo stesso programma funziona.
Come mai???
ecco il codice in allegato... HELP 
|
se vuoi una funzione che scambi semplicemente due numeri puoi usare una proprieta molto carina dello XOR che è questa:
a^=b;
b^=a;
a^=b;
che vuol dire
a=a^b;
b=b^a;
a=a^b;
esempio pratico
a=5 b=2
1° step a=a^b;----> a=5^2=7 stato: a=7 b=2
2° step b=b^a;----> b=2^7=5 stato: a=7 b=5
3° step a=a^b;----> a=7^5=2 stato: a=2 b=5
CVD :P
un'implementazione della funzioncina potrebbe essere:
Codice:
void scambi(int *a, int *b)
{
(*a)^=(*b);
(*b)^=(*a);
(*a)^=(*b);
}
non restituisce nulla ma se tu passi i due numeri alla fine ti ritroverai i due numeri scambiati se vuoi che ti restituisca qualcosa metti un if e ti fai ritornare il puntatore alla variabile piu grande :P