2013-09-04 8 views
5

W jaki sposób kompilator C (używam GCC) wie, co zrobić z następującymi?Jak to jest możliwe, aby C struct sam się odwoływał?

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

Dokładniej, jeśli node jeszcze zostać całkowicie jeszcze określona (nie osiągnęły zamykający nawias klamrowy), a następnie w jaki sposób kompilator wiedzieć, jak duży powinien być struct?

Chociaż zdaję sobie sprawę, że "wskazywanie" wymaga tylko adresu, zwiększanie wskaźników nie wymaga rozmiaru danych, które wskazuje.

+3

Przyrosty wskaźnika są obsługiwane dopiero po określeniu typu (typów). W przeciwnym razie pojawią się błędy o "niekompletnych typach". –

Odpowiedz

9

Wielkość struct nie jest ważna, ponieważ zapisywany jest wskaźnik do struct, a nie sam struct.

Pod względem inkrementacji wskaźników do struct; odbywa się to poza definicją struct, więc znowu nie jest ważne.

Powiązane problemy