PDA

Visualizza la versione completa : [ C ] strutture


C232
26-02-2005, 23:36
ragazzi non capisco perche una struttura non puo contenere un membro tipo della stessa struttura, ma puo contenere un membro puntatore tipo della stessa struttura.


Esempio:

struct nomeStruttura {
int uno;
int due;
nomeStruttura* tre; // Puo contenere un puntatore tipo della stessa struttura ma non un membro tipo della stessa. Come mai?
};

ibykos
26-02-2005, 23:54
Ci ho pensato un po', però, in effetti, mi sembra un problema analogo a quello legato alle funzioni ricorsive: se non ci sono delle condizioni di terminazione, come faccio a non andare in loop?
Bene, se dichiaro una struttura ricorsiva, cioè che contiene un puntatore a se stessa, non ho problemi di questo tipo, in quanto i puntatori hanno dimensione nota (32 o 64 bit a seconda dell'archiettura), per cui il compilatore sa quanto dovrà allocare ad una variabile del tuo tipo; mettiamo invece il caso di dichiarare una struttura ricorsiva come nel tuo caso, come fa il compilatore a sapere quanto è grande? Il compilatore sa che quando dichiari una variabile della tuo tipo deve allocare memoria per due int e poi ... per altri due int ... per altri due int ... all'inifinito.

Spero di esserti stato d'aiuto.

Se non ho risposto correttamente, correggetemi che sono pure io qui per imparare :-)

gandalf45
27-02-2005, 00:02
E' come dice ibykos
Una strutture non può contenere se stessa; avrebbe dimensioni infinite.

Quello che vuoi fare è:


struct a {
int x,y,z;
//blahblah
struct a
}
ma struct a contiene a sua volta un'altro struct a, e così via fino all'infinito (o più probabilmente ad uno stack overflow :D )

C232
27-02-2005, 00:19
giusto grazie....Non ci avevo pensato. :D

Loading