Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Структуры предназначены для создания новых типов данных на основе элементов разных базовых типов. С переменной типа структура можно обращаться как с единым элементом, передавать в качестве параметра, создавать указатели, копировать и т. д.
В отличие от массивов структура действительно вводит новый тип данных. Это означает, что до применения конкретной переменной нужно выполнить как минимум два объявления. Сначала нужно описать структуру. Описание структуры происходит глобально, на уровне проекта. Описанная структура получает идентификатор (имя структуры). Но это еще не переменная, это новый тип данных. Теперь, используя новый идентификатор, нужно объявить одну или сколько угодно переменных, точно так же, как и для базовых типов. Только теперь переменная нового типа получает «телесную оболочку» или, иными словами, конкретное место в памяти данных.
Объявление структуры должно начинаться с ключевого слова STRUCT и заканчиваться END_STRUCT. Синтаксис объявления выглядит так:
TYPE <Имя_структуры>: STRUCT
<Объявление переменной 1>
• • •
<Объявление переменной п>
END_STRUCT
END_TYPE
Пример объявления структуры по имени Trolley:
TYPE Trolley: STRUCT
Start: TIME;
Distance: INT;
Load, On: BOOL;
Articl: STRING(16);
END_STRUCT
END_TYPE
Объявление в программе переменной Telegal типа Trolley и начальная инициализация структуры выглядит так:
Telegal: Trolley:= (Articl:='Пустой');
При начальной инициализации не обязательно задавать значения для всех элементов. Элементы, не имеющие явно указанных начальных значений, по умолчанию получат нулевые значения.
Для доступа к элементам структуры используется следующий синтаксис:
<Имя__переменной>.<Имя_элемента>
Например:
Telegal.On:= True;
Структуры могут включать другие структуры, массивы и сами образовывать массивы. Пример объявления и инициализации массива структур:
TrolleySet: ARRAY[0..2] OF Trolley:= (Articl:= 'Т1'), (Articl:= 'Т2'), (Articl:= 'ТЗ'); TrolleySet[i].On:= TRUE;
Если структура содержит вложенную структуру, то доступ к элементам вложенной структуры осуществляется с применением составного имени, содержащего две точки:
train.wagon[5]. weight; (*wagon[] вложенный массив структур*)
Поскольку физический размер элементов структуры известен транслятору заранее, обращение к элементу структуры не дает каких-либо накладных расходов в сравнении с простой переменной. Транслятор имеет возможность рассчитать абсолютные адре-
са элементов при компиляции. Естественно, это не относится к массивам структур. Чтобы не иметь проблем при использовании нескольких различных переменных одной структуры, применять прямые адреса в структуре нельзя.
Дата публикования: 2015-04-10; Прочитано: 298 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!