Структуры

Структура – это совокупность переменных, объединённых одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Члены структуры также часто называются элементами или полями.)

Фрагмент кода объявляет структуру, определяющую имя и адрес. Ключевое слово struct сообщает компилятору об объявлении структуры.

struct addr {

char name[30];

char street[40];

char city[20];

char region[3];

unsigned long int zip;

};

Объявление завершается точкой с запятой, поскольку объявление структуры – это оператор. Имя структуры addr идентифицирует структуру данных и является спецификатором типа. Имя структуры часто используют как ярлык.

Пока не создано никакой переменной. Определена только форма данных. Для объявления переменной, соответствующей данной структуре, следует написать:

addr addr_info; //C++

struct addr addr_info; //C

Когда объявлена структурная переменная, компилятор автоматически выделяет необходимый участок памяти для размещения всех её членов.

При объявлении структуры можно одновременно объявить одну или несколько переменных. Например:

struct addr {

char name[30];

char street[40];

char city[20];

char region[3];

unsigned long int zip;

} addr_info, binfo, cinfo;


объявляет структуру addr и переменные addr_info, binfo, cinfo данного типа.

Если необходима только одна структурная переменная, то нет необходимости в ярлыке структуры. Это означает, что

struct {

char name[30];

char street[40];

char city[20];

char region[3];

unsigned long int zip;

} addr_info;


объявляет одну переменную addr_info с типом определённым предшествующей ей структурой.


Стандартный вид объявления структуры следующий:

struct ярлык {

тип имя_переменной;

тип имя_переменной;

тип имя_переменной;

} структурные переменные;


Доступ к членам структуры

Доступ к отдельным членам структуры осуществляется с помощью оператора. («точка»). Например, следующий фрагмент кода присваивает члену zip структурной переменной addr_info значение 12345:

addr_info.zip = 12345;

Ко всем членам структуры доступ осуществляется точно таким же способом. Стандартный вид доступа следующий:

имя_структуры.имя_члена

Таким образом, массив символов addr_info.name может использоваться в fgets():

fgets(addr_info.name,30,stdin);

Для доступа к отдельным элементам addr_info.name можно использовать индекс. Например:

register int t;

for(t=0; addr_info.name[t]; ++t) putchar(addr_info.name[t]);


Присваивание структур

Информация, содержащаяся в одной структуре, может быть присвоена другой структуре того же типа с помощью одиночного оператора присваивания, то есть не нужно присваивать значение каждого члена по отдельности. Следующая программа демонстрирует присваивание структур:

#include <stdio.h>

int main()

{

struct ab{

int a;

int b;

} x, y;

x.a = 10;

x.b = 20;

y = x;

printf(“Contents of y: %d %d.”, y.a, y.b);

return 0;

}

После присваивания y.a и y.b будут содержать значения 10 и 20 соответственно.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: