PDA

Visualizza la versione completa : [C] Dubbio su funzione


honneamise
10-08-2005, 12:01
dopo un po di tempo,riprendendo in mano C ho scritto una funzione del genere :

//DE_PObject e' un tipo puntatore a struct
DE_PObject DE_ObjectFree(DE_PObject DE_Variabile);

l' utilizzo nel main sarebbe tipo :

DE_PObject my_object;
my_object=DE_ObjectFree(my_object);

in pratica questa funzione :

1-prende come parametro un DE_PObject
2-disalloca la struct
3-restituisce gia' un NULL per sicurezza

IL DUBBIO E' :

con una sola funzione come indicato sopra , posso usare la stessa variabile sia come paramatro, sia per assegnare il valore di ritorno della funzione ?

oregon
10-08-2005, 12:17
Se scrivi

DE_PObject my_object;

stai semplicemente allocando il puntatore ma *non* la struttura ...

La chiamata a

my_object=DE_ObjectFree(my_object);

e' abbastanza strana, perche' un puntatore si passa per potere operare sui dati su cui punta in modo che il parametro sia di input e di output contemporaneamente; dato cio', e' inutile che la funzione restituisca un ulteriore puntatore ... dovrebbe essere, semplicemente

DE_ObjectFree(my_object);

Inoltre parli di deallocare la struttura ... ma non l'hai mai allocata ...

honneamise
10-08-2005, 12:21
Originariamente inviato da oregon
Se scrivi

DE_PObject my_object;

stai semplicemente allocando il puntatore ma *non* la struttura ...

La chiamata a

my_object=DE_ObjectFree(my_object);

e' abbastanza strana, perche' un puntatore si passa per potere operare sui dati su cui punta in modo che il parametro sia di input e di output contemporaneamente; dato cio', e' inutile che la funzione restituisca un ulteriore puntatore ... dovrebbe essere, semplicemente

DE_ObjectFree(my_object);

Inoltre parli di deallocare la struttura ... ma non l'hai mai allocata ...

la struttura viene allocata con altre funzioni, la domanda era un altra .

anx721
10-08-2005, 13:14
Si corretto; e ha senso restituire null in modo da impostare a null il puntatore deallocato

Loading