Хочу получить удостоверение. Сколько стоит оплата? |
Определение структур
Структурированные данные очень широко распространены в жизни. Они помогают группировать и систематизировать совокупности разнородных данных. Примерами структур могут быть кулинарные рецепты, каталоги компакт-дисков и т.д.
Структуру можно рассматривать как набор переменных различных типов, образующих единый объект. Этот отдельный объект и является структурой. Структура создается при помощи ключевого слова struct, за которой следует необязательной имя структуры (по-английски tag, тег) и список элементов структуры.
Имя структуры используется для создания других переменных данного структурного типа. Синтаксис структуры следующий:
struct имя_структуры { тип элемента элемент_1 тип элемента элемент_2 …………………………. тип элемента элемент_N };
Приведем пример простой структуры:
struct film {char *Titel; //Название фильма char *Director;//Режиссер фильма int year; //Год выхода на экран
С помощью приведенного выше описания задается структура film, но с ней не связана никакая переменная. Для связывания структуры film с некоторой переменной movee можно воспользоваться выражением:
struct film movee;
Далее, нам нужно инициализировать элементы структуры movee. Существует несколько способов инициализации. Рассмотрим один из вариантов:
movee.Titel="Star War"; movee.Director="Steven Spielberg"; movee.year=1986;
В приведенных выше операторах присваивания используется "точка" (.) - оператор обращения к члену структуры. В дальнейшем, например, с переменной movee.year можно работать как с обычной целочисленной переменной (например, добавить к ней число). Далее приводится простая программа, иллюстрирующая процесс объявления и инициализации структур.
//========================================================== // Name : struct_film.cpp // Author : Marat // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //========================================================== #include <iostream> using namespace std; //Объявляем структуру film struct film {char *Titel; //Название фильма char *Director;//Режиссер фильма int year; //Год выхода на экран }; struct film movee; int main() { movee.Titel="Star Wars"; movee.Director="George Lukas"; movee.year=1986; cout<<"\n"<<movee.Titel; cout<<"\n"<<movee.Director; cout<<"\n"<<movee.year; return 0; }
Результат:
Star Wars George Lukas 1986
Можно инициализировать структуры и таким образом:
struct film {char *Titel; //Название фильма char *Director;//Режиссер фильма int year; //Год выхода на экран } movee = {"Star War","Steven Spielberg",1986};
Массивы чисел могут быть элементами структур, с другой стороны, сами структуры могут объединяться в массивы.
struct library{ char *Author[n]; char *Titel; } book[m];
Приведен массив структур book (книжный каталог), в которые входит массив фамилий авторов (Author).
Структуры могут быть аргументами функций. Вызов структур производится по значению, при этом их содержимое не меняется. Сказанное иллюстрируется приводимой ниже программой.
//========================================================== // Name : struct_function.cpp // Author : Marat // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //========================================================== #include <iostream> using namespace std; struct film {char *Titel; //Название фильма char *Director;//Режиссер фильма int year; //Год выхода на экран } movee = {"Star Wars","George Lukas",1986}; void print(struct film anymovee) { cout<<"\nFilm Titel: "<<anymovee.Titel; cout<<"\nFilm Director: "<<anymovee.Director; cout<<"\nAppearance year: "<<anymovee.year<<endl; } int main() { //Прототип функции печати void print(struct film anymovee); //Вызов функции печати print(movee); return 0; }
Результат:
Film Titel: Star Wars Film Director: George Lukas Appearance year: 1986