- •Структуры и другие типы данных.
- •Установка структурного шаблона.
- •Определение структурных переменных.
- •Создание простой структуры. ( тут не знаю как лучше)
- •Инициализация структуры.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Создание массива структур.
- •Описание массива структур.
- •Определение элементов массива структур.
- •Вложенные структуры.
- •Использование указателей на структуры.
- •Описание и инициализация указателя на структуру.
- •Доступ к элементу структуры при помощи указателя.
- •Передача информации о структурах функциям. Использование элементов структуры.
- •Передача массива структур в функцию.
- •Дополнительные манипуляции со структурами.
- •Передача членов структуры в функцию.
- •Передача информации о структурах функциям. Использование элементов структуры.
- •Передача информации о структурах функциям. Использование адреса структуры.
- •Передача информации о структурах функциям. Использование массива.
- •Имя массива можно использовать для передачи в функцию указателя на первую структуру в массиве.
- •Затем можно использовать арифметическую операцию над указателем, чтобы передвигать его на последующие структуры в массиве. Заметим, что вызов функции
- •Структуры внутри структур.
- •Структуры и битовые поля.
- •Структуры. Их дальнейшее использование.
- •Объединения.
- •Шаблон объединения.
- •Объединения: синтаксис и правила.
- •Создание простого объединения.
- •Вспомогательные средства.
- •Использование typedef.
- •Сложные формы данных.
- •Использование enum.
Структуры и другие типы данных. Структуры С и C++: синтаксис и правила. Создание простой структуры.
Структуры и другие типы данных.
Основное внимание здесь уделено двум важным средствам, общим для С и C++: структурам и объединениям. Структура С или C++ аналогична массиву или вектору тесно связанных атрибутов. Однако в отличие от массива или вектора структура позволяет иметь смешанные атрибуты различных типов данных.
Структуры очень важны в С и C++, они являются предшественниками более совершенного типа C++, называемого классом. После детального знакомства со структурами намного проще разбираться с классами C++. Это объясняется тем, что классы C++ содержат и дополняют многие свойства структур.
Структура позволяет хранить различные типы данных, включай структуры, массивы, собственные типы данных и др.
Еще один сложный тип, объединения, позволяет хранить различные типы данных в одной области памяти. Эти сложные типы данных служат основой для большинства программ электронных таблиц и баз данных.
struct book {
char title [MAXTIT]; /* символьный массив для названия */
char author [MAXAUT]; /* символьный массив для фамилии автора */
float value; /* переменная для хранения цены книги */
}; /* конец шаблона структуры */
Созданная нами структура состоит из трех частей: одна для названия, другая для фамилии автора и третья для цены. Мы должны изучить три основных вопроса:
Как устанавливать формат или «шаблон» для структуры.
Как объявлять переменную, соответствующую этому шаблону.
Как осуществлять доступ к отдельным компонентам структурной переменной.
Установка структурного шаблона.
Структурный шаблон является основной схемой, описывающей, как собирается структура. Наш шаблон выглядел бы так:
struct book {
char title [MAXTIT];
char author [MAXAUT];
float value;
};
Этот шаблон описывает структуру, составленную из двух символьных массивов и одной переменной типа float. Давайте рассмотрим его детально.
Первым стоит ключевое слово Struct; оно определяет, что все, что стоит за ним, является структурой. Далее следует необязательный «тег» (имя типа структуры) — слово book, являющееся сокращенной меткой, которую мы можем использовать позже для ссылки на эту структуру. Поэтому где-нибудь позже у нас будет описание
struct book libry;
которое объявляет libry структурой типа book.
Далее у нас есть список «элементов» структуры, заключенный в парные фигурные скобки. Каждый элемент определяется своим собственным описанием. Например, элемент title является символьным массивом, состоящим из MAXTIT-элементов. Как мы уже отмечали, элементы могут быть данными любого типа, включая другие структуры!
И, наконец, мы ставим точку с запятой, завершающую определение шаблона.
Вы можете разместить этот шаблон за пределами любой функции (вне), как мы и сделали, или внутри определения функции. Если мы установили шаблон внутри функции, то он может использоваться только внутри этой функции. Если вне, то шаблон доступен всем функциям программы, следующим за его определением. Например, в другой функции вы можете определить
struct book dickens;
и эта функция должна иметь переменную dickens, которая следует за нашим шаблоном.
Мы сказали, что имя типа структуры необязательно, но его следует использовать, если вы создаете структуру так, как это сделали мы, определив шаблон в одном месте, а фактические переменные в другом. Мы вернемся к этому вопросу после того, как рассмотрим определение структурных переменных.