Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА № 1. Составные типы данных.doc
Скачиваний:
91
Добавлен:
17.05.2013
Размер:
128.51 Кб
Скачать

Лабораторная работа № 1. Составные Типы данных

СТРУКТУРЫ

1 Цель работы

Усвоение студентами понятия составного типа данных; получение практических навыков в работе с интегрированными типами данных - структурами и массивами структур языка C++.

2 Теоретические сведения

Концепция типа данных

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

Все типы языка С++ можно разделить на основные и составные. В языке С++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

При обработке данных достаточно часто приходится работать с рядом переменных одинакового типа (и описывающих одинаковые объекты). В этом случае эти переменные имеет смысл объединить одним идентификатором. Это позволяют сделать массивы.

Массивы - это группа элементов одинакового типа (float, char, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве.

Работа с массивами облегчает понимание и написание программы, когда для обозначения похожих элементов используется один идентификатор. Однако в ряде случаев приходится обрабатывать разнородные элементы, описывающие один объект. В этом случае вместо массива используется структура.

Объявление структуры

Структура - это совокупность логически связанных переменных, возможно, различных типов, сгруппированных под одним именем для удобства дальнейшей обработки. Cтруктура - это составной объект, в который входят элементы любых типов, за исключением функций.

В отличие от массива, который является однородным объектом, структура может быть неоднородной.

Тип структуры определяется записью вида:

struct [имя_структуры] {

тип_элемента_структуры имя_ элемента1; // описания полей структуры

тип_элемента_структуры имя_ элемента2;

...

тип_элемента_структуры имя_ элементаN;

} [список_объявляемых_переменных];

Здесь имя_структуры — это любое имя, соответствующее синтаксису языка Си, описания полей структуры — любая последовательность описаний переменных, имена и типы этих переменных могут быть произвольными. Эти переменные называются полями структуры. Заканчивается описание структуры закрывающей фигурной скобкой. За закрывающей фигурной скобкой в описании структуры обязательно следует точка с запятой.

Типом элемента структуры может быть:

    • другой структурный тип (допускаются вложенные структуры);

    • указатель на данный структурный тип;

    • неполно объявленный структурный тип;

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

Точно так же, как в случае любого другого базисного типа, за правой фигурной скобкой, закрывающей список членов, может следовать список переменных. Оператор

struct \( ...\) x,y,z;

синтаксически аналогичен

int x,y,z;

в том смысле, что каждый из операторов описывает x, y и z в качестве переменных соответствующих типов и приводит к выделению для них памяти.

Описание структуры, за которым не следует списка переменных, не приводит к выделению какой-либо памяти; оно только определяет шаблон или форму структуры.

После того как вы определите структуру, ваша программа может объявить переменные типа этой структуры, используя имя структуры (иногда называемое структурным тэгом), как показано ниже:

struct employee

{ char name [64] ;

long employee_id;

float salary;

char phone[10];

int office_number;

}; employee boss, worker, new_employee; //объявление переменных

В данном случае оператор создает три переменные структуры employee. В некоторых случаях вы можете увидеть объявление, в котором тэг структуры предваряется ключевым словом struct, как показано ниже:

struct employee boss, worker, new_employee;

Ключевое слово struct является обязательным при программировании на С, так что некоторые программисты могут включать его по привычке. Однако в C++ использовать ключевое слово struct необязательно.

Список объявляемых переменных типа данной структуры может содержать:

    • имена переменных;

    • имена массивов;

    • указатели.

Для использования указателя на структуру ему необходимо присвоить адрес переменной типа структуры.

Структура не может содержать в качестве вложенной структуры саму себя, но она может содержать элемент, являющийся указателем на объявляемую структуру.

Например:

struct structA {

struct structA *pA; int iA; } sA; // pA указатель на структуру

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