
Лабораторная работа № 5 Структуры
Цель работы: получить практические навыки решения задач с использованием структур.
Теоретические сведения
Структура – это совокупность переменных, объединённых одним именем, предоставляющая общепринятый способ хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру, называются членами структуры. (Члены структуры также часто называются элементами или полями.)
Например, информация об имени и адресе, находящаяся в списке рассылки, обычно представляется в виде структуры. Следующий фрагмент кода объявляет шаблон структуры, определяющей имя и адрес. Ключевое слово struct сообщает компилятору об объявлении структуры.
struct addr {
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
};
Объявление завершается точкой с запятой, поскольку объявление структуры – это оператор. Имя структуры addr идентифицирует структуру данных и является спецификатором типа. Имя структуры часто используют как ярлык.
На данный момент не создано никакой переменной. Определена только форма данных. Для объявления настоящей переменной, соответствующей данной структуре, следует написать:
addr addr_info;
В данной строке происходит объявление переменной addr_info типа addr.
При объявлении структуры можно одновременно объявить одну или несколько переменных. Например:
struct addr {
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
} addr_info, binfo, cinfo;
объявляет структуру addr и объявляет переменные addr_info, binfo, cinfo данного типа.
Стандартный вид объявления структуры следующий:
struct ярлык{
тип имя переменной;
тип имя переменной;
тип имя переменной;
.
.
.
} структурные переменные;
ярлык – это имя типа структуры. Структурные переменные – это разделённый запятыми список имён переменных. Следует помнить, что или ярлык, или структурные переменные могут отсутствовать, но не оба.
Доступ к членам структуры
Доступ к отдельным членам структуры осуществляется с помощью оператора . (обычно называется «точкой»). Например, следующий фрагмент кода присваивает члену zip структурной переменной addr_info значение 12345:
addr_info.zip = 12345;
Присваивание структур
Информация, содержащаяся в одной структуре, может быть присвоена другой структуре того же типа с помощью одиночного оператора присваивания, то есть не нужно присваивать значение каждого члена по отдельности. Следующая программа демонстрирует присваивание структур:
#include <stdio.h>
int main(void)
{
struct {
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 соответственно.
Массивы структур
Возможно, наиболее часто структуры используются в виде массивов структур. Для объявления массива структур следует сначала определить структуру, а затем объявить массив переменных данного типа. Например, для объявления 100-элементного массива структур типа addr, которая была определена ранее, следует написать:
struct addr addr_info[100];
В результате получаем набор из 100 переменных, устроенных, как объявлено в типе структуры addr.
Для доступа к отдельным структурам массива addr_info следует проиндексировать имя массива. Например,
printf(“%d “, addr_info[2].zip);