Рекурсивная структура

Нужно ли мне использовать typedef для создания рекурсивных структур? Я безуспешно пытался использовать следующий код:

struct teste
{
    int data;
    int data2;
    struct teste to_teste;
};

person user1843665    schedule 22.11.2012    source источник
comment
Почему вы используете структуру ключевого слова дважды?   -  person gvd    schedule 22.11.2012
comment
В C не может быть напрямую рекурсивных структур; им требуется бесконечное количество места для хранения. У вас могут быть структуры, содержащие указатели на самих себя.   -  person Jonathan Leffler    schedule 22.11.2012
comment
Я попытался определить структуру внутри структуры   -  person user1843665    schedule 22.11.2012


Ответы (2)


Для построения рекурсивных структур вам не нужно typedef.

Вам нужно будет преобразовать объект структуры в объект struct pointer.

нравится:

struct teste{
  int data;
  int data2;
  struct teste *to_teste;
};
person Aniket Inge    schedule 22.11.2012
comment
@ user1843665 вот для чего нужно переполнение стека. :-) - person Aniket Inge; 22.11.2012
comment
О, понятно. Я бы сделал ссылку на data2 во внутренней структуре: struct teste testing; testing.to_teste- ›data2? - person user1843665; 22.11.2012
comment
не забудьте malloc() указатель to_teste перед использованием testing.to_teste->data2; - person Aniket Inge; 22.11.2012

Вы НЕ МОЖЕТЕ иметь внутри себя такую ​​же структуру. Если вы сделаете это, то размер этой структуры станет неопределенным. Так что это недопустимо.

Вместо этого вы можете иметь указатель на ту же структуру внутри себя для решения вашей задачи. Это будет работать, потому что размер указателя известен компилятору, и теперь структура имеет определенный размер.

person CCoder    schedule 22.11.2012