Лабораторная работа № 8
Структурный тип данных на языке C++
Цель работы: получить практические навыки решения задач с использованием структурного типа данных.
Теоретические сведения
Иногда удобно иметь набор значений различного типа, с которыми можно обращаться как с одним элементом.
Рассмотрим, например, музыкальную коллекцию на компакт-дисках (CD). Такая коллекция может включать следующую информацию:
название CD;
фамилия режиссера;
число фильмов;
стоимость CD;
дата покупки.
Эта структура имеет пять полей. Определим тип для поля структуры:
Имя элемента |
Тип данных |
Название CD |
Символьный массив из 25 символов |
Фамилия режиссера |
Символьный массив из 20 символов |
Число фильмов |
Целый |
Стоимость CD |
С плавающей точкой |
Дата покупки |
Символьный массив из 8 символов |
Определение структурного типа
Для определения структурного типа используется ключевое слово struct:
struct имя_структурного_типа
{ описание поля1;
. . .
описание поляn;
} [одна или более переменных];
Поле описывается как переменная стандартного типа или типа, определенного пользователем.
Пример 8.1. Структура с информацией о CD:
struct cd_info
{
char titlel[25]; // название CD
char regiss [20]; // режиссер
int num_films; // число фильмов
float price; // стоимость CD
char date_bought[8];// дата покупки
}col1,col2,col3;
Переменные структурного типа можно объявлять так же, как и переменные стандартных типов.
Пример 8.2. Cтруктура с информацией о CD:
struct cd_info
{ char titlel[25]; // название CD
char regiss [20]; // режиссер
int num_films; // число фильмов
float price; // стоимость CD
char date_bought[8]; // дата покупки
};
cd_info cd1, cd2, cd3; /*определение переменных cd1, cd2, cd3 */
При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется.
Инициализация переменной структурного типа
Переменную структурного типа можно инициализировать одновременно с объявлением. Инициализация переменной структурного типа производится, если после имени типа следуют знак "=" и список значений полей структурного типа в фигурных скобках разделенные запятой.
Пример 8.3. Инициализация структуры, содержащей информацию о музыкальной коллекции на CD:
struct cd_info
{ char titlel[25]; // название CD
char regiss [20]; // режиссер
int num_films; // число фильмов
float price; // стоимость CD
char date_bought[8]; // дата покупки
};
cd_info cd={"Payback",
"Brain Helgeland",
2,
11.95,
"02.13.97"};
Значения переменным-полям присваиваются в порядке их объявления при определении структурного типа.
Доступ к значениям полей структурного типа
Доступ к значениям полей структурного типа осуществляется с помощью операции точка.
Общий вид:
Имя_переменной_структурного_типа . имя_поля
Пример 8.4.
#include <stdio.h>
struct cd_info
{ char titlel[25]; // название
char regiss [20]; // режиссер
int num_films; // число фильмов
float price; // стоимость CD
char date_bought[8]; // дата покупки
};
cd_info cd={" Payback ",
" Brain Helgeland ",
2,
11.95,
"02.13.97"};
void main()
{
// вывод содержимого переменной cd
printf("Название: %s\n",cd.titlel);
printf("Режиссер: %s\n",cd. regiss);
printf("Число фильмов: %d\n",cd. num_films);
printf("Стоимость:%5.2f\n",cd.price);
printf("Дата покупки %s\n", cd.date_bought);
}