View Single Post
Old 12-06-2008, 09:28   #5
phantom85
Senior Member
 
L'Avatar di phantom85
 
Iscritto dal: Aug 2007
Messaggi: 1469
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
Codice:
#include <stdio.h>

int *scambia (int a, int b) {
	int swap, *max;
	swap=a;
	a=b;
	b=swap;	
	if (a>b)
		*max=a;
	else
		*max=b;
	return max;
}


int main() {
	int a=7, b=5;
	printf ("Il più grande è: %d\n",scambia(a,b));
	return 0;
}
per comodità te l'ho riscritto nei tag quote...

perchè scambi le variabili all'interno della funzione? quelle sono copie locali...

il puntatore max non è inizializzato... un puntatore si inizializza con un indirizzo di memoria, non con un valore...

la funzione torna un int *, quindi per accedere al valore effettivo devi fare una derefernziazione, cioè *(scambia(a,b))...

cmq la tua funzione non scambia nulla, o meglio, scambia solo i valori delle copie locali e "restituisce" (o almeno, ci prova) un puntatore ad una variabile che però verrà distrutta, in quanto è allocata sullo stack e alla chiusura della funzione quell'indirizzo che vorresti assegnarli non puoi sapere a cosa punterà...
Ringrazio tutti per l'aiuto!
Comunque il testo dell'esercizio è questo:
"Scrivete una funzione che scambi il valore di due variabili intere e restituisca un puntatore al valore massimo.
Testate la funzione richiamandola dal main del programma (non è necessario prevedere l’inserimento di input, inizaliz-
zate opportunamente le variabili per fare i test necessari)."


A questo punto cosa dovrei scrivere? L'implementazione con lo XOR è carina, ma non ce l'hanno mai spiegata, quindi non credo di poterla usare!!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd
phantom85 è offline   Rispondi citando il messaggio o parte di esso