|
Хочу получить удостоверение. Сколько стоит оплата? |
Определение структур
Структурированные данные очень широко распространены в жизни. Они помогают группировать и систематизировать совокупности разнородных данных. Примерами структур могут быть кулинарные рецепты, каталоги компакт-дисков и т.д.
Структуру можно рассматривать как набор переменных различных типов, образующих единый объект. Этот отдельный объект и является структурой. Структура создается при помощи ключевого слова 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