СТАТИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ

Статические структуры относятся к разряду непримитивных

структур, которые, фактически, представляют собой структурирован-

ное множество примитивных, базовых, структур. Например, вектор

может быть представлен упорядоченным множеством чисел. Поскольку

по определению статические структуры отличаются отсутствием из-

менчивости, память для них выделяется автоматически - как прави-

ло, на этапе компиляции или при выполнении - в момент активизации

того программного блока, в котором они описаны. Ряд языков прог-

раммирования (PL/1, ALGOL-60) допускают размещение статических

структур в памяти на этапе выполнения по явному требованию прог-

раммиста, но и в этом случае объем выделенной памяти остается не-

изменным до уничтожения структуры. Выделение памяти на этапе ком-

пиляции является столь удобным свойством статических структур,

что в ряде задач программисты используют их даже для представле-

ния объектов, обладающих изменчивостью. Например, когда размер

массива неизвестен заранее, для него резервируется максимально

возможный размер.

Каждую структуру данных характеризуют её логическим и физи-

ческим представлениями. Очень часто говоря о той или иной струк-

туре данных, имеют в виду её логическое представление. Физическое

представление обычно не соответствует логическому, и кроме того,

может существенно различаться в разных программных системах. Не-

редко физической структуре ставится в соответствие дескриптор,

или заголовок, который содержит общие сведения о физической

структуре. Дескриптор необходим, например, в том случае, когда

граничные значения индексов элементов массива неизвестны на этапе

компиляции, и, следовательно, выделение памяти для массива может

быть выполнено только на этапе выполнения программы (как в языке

PL/1, ALGOL-60). Дескриптор хранится как и сама физическая струк-

тура, в памяти и состоит из полей, характер, число и размеры ко-

торых зависят от той структуры, которую он описывает и от приня-

тых способов ее обработки. В ряде случаев дескриптор является со-

вершенно необходимым, так как выполнение операции доступа к

структуре требует обязательного знания каких-то ее параметров, и

эти параметры хранятся в дескрипторе. Другие хранимые в дескрип-

торе параметры не являются совершенно необходимыми, но их исполь-

зование позволяет сократить время доступа или обеспечить контроль

правильности доступа к структуре. Дескриптор структуры данных,

поддерживаемый языками программирования, является "невидимым" для

программиста; он создается компилятором и компилятор же, формируя

объектные коды для доступа к структуре, включает в эти коды ко-

манды, обращающиеся к дескриптору.

Статические структуры в языках программирования связаны со

структурированными типами. Структурированные типы в языках прог-

раммирования являются теми средствами интеграции, которые позво-

ляют строить структуры данных сколь угодно большой сложности. К

таким типам относятся: массивы, записи (в некоторых языках -

структуры) и множества (этот тип реализован не во всех языках).