Другие языки программирования и технологии

[C/C++] Oбъявление переменной типа структуры в этой же структуре

Например:
typedef struct sTest{
float X, Y, Z;
sTest Testes;
};

sTest Normal;

Какая область видимости этой переменной?
Что-то я не пойму. Какая-то рекурсия получается:
Normal.Testes.Testes...

Объясните на примере или линк на туториал с подобным траблом/примером.
Этот код не работает.
По твоему вопросу - включать в структуру можно только указатель на нее саму, но не саму структуру:
struct sTest{
float X, Y, Z;
struct sTest *Testes;
};
Структура в самой себе - выражение бессмысленное, т. к. потребует бесконечность памяти; да и вообще, из соображений неопределенности памяти нельзя создавать что-то не до конца определенного типа - только ссылку на это.
По typedef: общий вид выражения typedef тип1 тип2; означает, то в дальнейшем тип2 будет означать то же, что и тип1.
struct Имя{что-то} будет создавать в C/C++ новый тип с сложным названием struct Имя; в C++ к этому типу можно обращаться через Имя, в C - только полностью.
typedef struct Имя1{что-то} Имя2;, таким образом, будет создавать два типа - struct Имя1 и Имя2.
Ну и еще пара конструкций:
struct Имя1{что-то} Имя2, Имя3; - создать две переменные Имя2, Имя3 типа struct Имя1.
typedef struct{что-то} Имя1; - создать БЕЗЫМЯННУЮ структуру и назначить ей "псевдоним" Имя1.
Все ясно или что-то уточнить?
Dre Amer
Dre Amer
86 322
Лучший ответ
***фарух*** ***хакимжанов*** А зачем указатель на нее саму?
Что можно сделать с этим указателем? Какие действия?
Можно объявить указатель типа структура, причём не один, и нужно это для реализации, например, списков.
и зачем такой бред мутить?
Крутым программером будешь?
***фарух*** ***хакимжанов*** Эм... деревья, например
там может быть только указатель. который было бы не плохо ещё и проинициализировать =)
struct St
{
float x;
St* next,prev;
};

St *tmp=new St;
tmp->prev=0;
tmp->next=new St;
tmp->next->prev=tmp;
tmp->next->next=new St;
ну, в общем, ты меня понял....
Павел Новиков
Павел Новиков
9 289