C структура с указателем на себя
Можно ли определить структуру с указателем на этот тип структуры? Я имею в виду:
typedef struct {
char* name;
node* parent;
} node;
Насколько я пытался или читал, я не знаю, как это сделать или даже возможно ли это.
5 ответов
Да, но вы должны назвать структуру, чтобы вы могли ссылаться на нее.
typedef struct node_ {
char* name;
struct node_ * parent;
} node;
Имя node
объявляется только после того, как структура полностью определена.
Вы можете использовать incomplete type
в typedef
:
typedef struct node node;
struct node {
char *name;
node *parent;
};
Я согласен... и деревья. Вам не нужно смотреть на это как на "яйцо и курицу", потому что определение типа всегда происходит перед его созданием. Таким образом, иметь переменную-член одного и того же типа объекта просто сложно, когда вы начинаете смешивать их в своей голове!
Почему бы тебе не попробовать это? Вы должны поместить имя в структуру, и да, именно так работают рекурсивные структуры данных.