Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ход работы. Основные сведения о структурах в языке С++.Структуры в C++ обладают практически теми же возможностями






Основные сведения о структурах в языке С++. Структуры в C++ обладают практически теми же возможностями, что и классы, но чаще их применяют просто для логического объединения связанных между со­бой данных. В структуру, в противоположность массиву, можно объединять дан­ные различных типов.

Например, требуется обрабатывать информацию о расписании работы конференц-зала, и для каждого мероприятия надо знать время, тему, фамилию организатора и количество участников. Поскольку вся эта информация относится к одному собы­тию, логично дать ему имя, чтобы впоследствии можно было к нему обращаться. Для этого описывается новый тип данных:

 

struct Event

{

int hour, min;

char theme[100], name[100];

int num;

}

 

Имя этого типа данных - Event. Можно описать переменные этого типа точно так же, как переменные встроенных типов, например:

 

Event el. e2[10]; // структура и массив структур

 

Если структура используется только в одном месте программы, можно совместить описание типа с описанием переменных, при этом имя типа можно не указывать:

 

struct

{

int hour, min;

char theme[100]. name[100];

int num;

}

el, e2[10];

 

Переменные структурного типа можно размещать и в динамической области па­мяти, для этого надо описать указатель на структуру и выделить под нее место:

 

Event *pe = new Event; //структура

Event *pm = new Event[m]; //массив стуктур

 

Элементы структуры называются полями. Поля могут быть любого основного типа, массивом, указателем, объединением или структурой. Для обращения к полю ис­пользуется операция выбора («точка» для переменной и -> для указателя), на­пример:

 

el.hour = 12; el.min = 30;

strncpy(e2[0]).theme. " Выращивание кактусов в условиях Крайнего Севера". 99);

pe-> num = 30; // или (*pe).num = 30;

pm[2].hour = 14; // или (*(pm + 2)).hour = 14;

 

Структуры одного типа можно присваивать друг другу:

 

*ре = el: pm[l]» el: pm[4] = e2[0];

 

Но присваивание - это и все, что можно делать со структурами целиком. Другие операции, например сравнение на равенство или вывод, не определены. Впрочем, пользователь может задать их самостоятельно, поскольку структура является ви­дом класса, а в классах можно определять собственные операции.

Ввод/вывод структур, как и массивов, выполняется поэлементно. Вот, например, как выглядит ввод и вывод описанной выше структуры el с использованием клас­сов ввода-вывода (< iostream.h>):

 

cin» el.hour» el.min;

cin.getline(el.theme. 100);

cout «el.hour «' '«el.min «' '«el.theme «endl;

 

Вариант с использованием ввода-вывода в стиле С (подключается заголовоч­ный файл < stdio.h>):

 

scanfC'MM", Sel.hour, Sel.min); gets (el. theme);

printf(" & d %d %s". el.hour, el.min. el.theme);

 

Структуры (но, конечно, не динамические) можно инициализировать перечисле­нием значений их элементов:

 

Event еЗ - {12. 30. " Выращивание кактусов в условиях Крайнего Севера", 25};

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал