Quote:
Originariamente inviato da Antonio23
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
|