Студопедия

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

Разделы сайта

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






Определения структур






Цель работы

Изучить особенности работы с составным типом данных – структуры.

Краткие теоретические сведения

Производные типы

Из базовых типов можно формировать производные типы, к которым относятся: указатели, массивы, функции, структуры и объединения.

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

Различие между агрегирующими и неагрегирующими типами можно рассмотреть на примере массивов и скалярных данных базовых типов. Обычно агрегирующий тип включает несколько компонентов (массив из 12 элементов, каждый из которых принадлежит к одному и тому же типу). Для агрегирующего типа данных (например, для массива) в основной памяти ЭВМ выделяется такое количество памяти, чтобы сохранить (разместить) одновременно значения всех элементов.

Для данных неагрегирующих типов в основной памяти ЭВМ выделяется область памяти, достаточная для размещения только одного значения.

Структурный тип

Этот тип (производный агрегирующий) задает внутреннее строение определяемых с его помощью структур.

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

Формат определения структурного типа:

struct имя_структурного_типа

{

тип_1 элемент_1;

тип_2 элемент_2;

тип_n элемент_n;

};

struct – спецификатор структурного типа

имя_структурног_типа – идентификатор, произвольно выбираемый программистом.

Следует обратить внимание, что определение структурного типа (в отличие от определения функции) заканчивается точкой с запятой.

Конструкция struct имя_структурного_типа играет ту же роль, что и спецификаторы типов, например double или int.

Определения структур

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

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

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

struct имя_структурного_типа список_структур;

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

struct имя_структурного_типа

{определения элементов}список_структур;

Пример:

struct student

{

char name[15]; //имя

char surname [20]; //фамилия

int year; //курс

} student1, student2, student3;

Здесь определен структурный тип с именем student и три конкретные структуры student1, student2, student3, которые являются полноправными объектами. В каждую из этих трех структур входят элементы, позволяющие представить имя, фамилию, курс студента.

После приведенного определения в той же программе можно определять любое количество структур, используя структурный тип student.

struct student leader, freshman;

Другой вариант определения структур является некоторым упрощением приведенного варианта. Дело в том, что можно определять структуры, приведя «внутренне строение» структурного типа, но не водя его название. Такой безымянный структурный тип обычно используется в программе для однократного определения структур.

struct

{определение_элементов} список_структур;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.