Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1-14.doc
Скачиваний:
11
Добавлен:
12.05.2015
Размер:
326.14 Кб
Скачать

- 10-

Информатика

Лабораторная работа 1-14

Лабораторная работа № 1-14

Структуры. Создание и вызов функций в C

1. Цель работы

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

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).

2.2. Программное обеспечение: операционная системаWindows, интегрированная оболочкаBorlandC++.

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

3.1. Структуры

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

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

Объявление структуры в Cзадается в одном из следующих двух форматов:

struct имя-типа {список-объявлений} описатель-1, описатель-2...;

struct имя-типа описатель-1, описатель-2...;

где

  • имя-типав первом формате – необязательный идентификатор, именующий структурный тип, задаваемый списком перечисления, указанном в операторе, а во втором формате – ссылка на структуру тип с именемимя-типа, объявленную в другом месте программы;

  • список-объявлений– последовательность из одного и более объявлений переменных или битовых полей. Элементы структуры могут иметь базовый тип, либо быть массивом, указателем, объединением или, в свою очередь, структурой. Объявление элементов структуры как битовых полей будет описано при рассмотрении операций над битами.

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

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

Объявление даты как структуры будет иметь следующий вид:

struct date

{

int unsigned day; /* День месяца */

char *month; /* Наименование месяца */

int unsigned year; /* Год */

char *week_day; /* День недели */

} current_date;

Здесь объявлен тип структуры date, описывающий компоновку даты и конкретная структура для текущей даты типаdateс именемcurrent_date.

В программе затем можно объявлять и другие структуры типа date, используя второй формат объявления структуры, например, дату дня рождения можно объявить как структуру типаdateследующим образом:

struct date birth_date;

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

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

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

Можно также объявлять указатели на структуры, например:

Доступ к отдельному элементу структуры осуществляется посредством конструкции вида:

имя-структуры.элемент-структуры

Для доступа к данным структуры можно также использовать указатели. Поскольку указатели на структуры используются довольно часто, для доступа к ее элементам вместо приведенного выше выражения можно использовать следующую форму записи:

указатель-на-структуру -> элемент-структуры

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

Структуры одного типа можно объединять в массивы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]