Объявление структур
Как и любые переменные в Паскале, структуры необходимо объявлять. До этого мы работали с простыми типами данных (целыми, вещественными, логическими и символьными), а также с массивами этих типов. Вы знаете, что при объявлении переменных и массивов указывается их тип, поэтому для того, чтобы работать со структурами, нужно ввести новый тип данных.
Построим структуру, с помощью которой можно описать книгу в базе данных библиотеки. Будем хранить в структуре только 1:
1 Конечно, в реальной ситуации данных больше, но принцип не меняется.
Объявление такого составного типа имеет вид:
Объявления типов данных начинаются с ключевого слова type (в переводе с англ. — тип) и располагаются выше блока объявления переменных. Имя нового типа — TBook — это удобное сокращение от английских слов Type Book (тип книга), хотя можно было использовать и любое другое имя, составленное по правилам языка программирования. Слово record означает, что этот тип данных — структура (запись); далее перечисляются поля и указываются их типы. Объявление структуры заканчивается ключевым словом end.
Обратите внимание, что для строк author и title указан максимальный размер. Это сделано для того, чтобы точно определить, сколько места нужно выделить на них в памяти.
В результате такого объявления никаких структур в памяти не создаётся: мы просто описали новый тип данных, чтобы транслятор знал, что делать, если мы захотим его использовать.
Теперь можно использовать тип TBook так же, как и простые типы, для объявления переменных и массивов:
Здесь введена переменная В типа TBook и массив Books, состоящий из элементов того же типа.
Иногда бывает нужно определить размер одной структуры. Для этого используется стандартная функция sizeof, которой можно передать имя типа, а также переменную или массив:
Writeln(sizeof(TBook)); Writeln(sizeof(В)); Writeln(sizeof(Books));
Первые две команды выведут на экран размер одной структуры (124 байта), а последняя — размер выделенного массива из 100 структур. Размер структуры вызывает некоторые вопросы: каждый элемент строки занимает 1 байт, а целое число — 2 байта, поэтому простой подсчёт дает значение 40 + 80 + 2 = 122. Откуда появились ещё 2 байта? Дело в том, что строка author из 40 символов фактически занимает 41 байт, а строковое поле title — 81 байт: 1 дополнительный байт расходуется на хранение фактического размера строки.
Следующая страница Обращение к полю структуры