В данной строке происходит объявление переменной addr info типа addr. При объявлении структуры определяется переменная смешенного типа до тех пор, пока не будет объявлена переменная данного типа, она не будет существовать. Когда объявлена структурная переменная, компилятор автоматически выделяет необходимый участок памяти для размещения всех ее членов.
Пример размещения addr info в памяти:
Name 30 байт
Street 40 байт
City 20 байт - addr. info
State 3 байт
Zip 4 байт
При объявлении структуры можно одновременно объявить одну или несколько переменных.
Пример:
struct addr {
char name [30];
char street [40];
char city [30];
char state [3];
unsigned long int Zip;
addr _ info, binfo, cinfo;
};
В данном случае объявляется структура addr и переменные info, binfo, cinfo данного типа, каждая вновь создаваемая структурная переменная содержит свои собственные копии переменных, образующих структуру. Если необходимо только одна структурная переменная, то нет необходимости в ярлыке структуры.
Пример:
struct {
char name [30];
char street [40];
char city [20];
char state [3];
unsigned long int Zip;
} addr_info;
В данном случае объявляется одна переменная addr_info c типом определенным предшествующей ей структуры.
ПРИМЕЧАНИЕ.
Т.е. при использовании структурных переменных, при описании структуры выделяется соответствующая память, без использования структурных переменных память не выделяется, а просто задается форма записи.