2013-09-04 9 views
5

Come fa un compilatore C (sto usando GCC) a sapere cosa fare con quanto segue?Com'è possibile che una struttura C faccia riferimento a se stessa?

struct node 
{ 
    int x; 
    struct node* next; 
}; 

Più precisamente, se node deve ancora essere ancora completamente definita (non abbiamo ancora raggiunto la parentesi graffa di chiusura), quindi come fa il compilatore sa quanto è grande uno struct dovrebbe essere?

Mentre mi rendo conto che "puntare a" richiede solo un indirizzo, i puntatori incrementali richiedono la dimensione dei dati a cui punta.

+3

Gli incrementi del puntatore vengono gestiti solo dopo che il/i tipo/i sono stati determinati completamente. Altrimenti riceverai errori che menzionano "tipi incompleti". –

risposta

9

La dimensione di struct non è importante, poiché viene memorizzato un puntatore allo struct, non lo stesso struct.

In termini di incrementi di puntatori a struct; ciò avviene al di fuori della definizione struct, quindi, di nuovo, non è importante.

Problemi correlati