Данные типа Запись

Лекция № 18

Данные типа Запись.

Запись отличается от массива тем, что компоненты записи могут иметь различный тип. На практике часто встречаются данные этого типа (обычно их…  

Оператор присоединения.

Для получения более компактной записи составных имен в ТР предусмотрен оператор присоединения WITH , который записывается в виде

With <список> DO оператор (простой или составной) .

Здесь With (с), Do (делать) – зарезервированные слова; <список> - это ссылки на имена переменных типа запись. Список может содержать несколько ссылок.

Пример использования оператора With.

 

 

Указатели и динамическая память

Динамическая память - что это такое? Для всех переменных, объявленных в программе, до начала выполнения программы… Длина сегмента определяется архитектурой ЭВМ и обычно составляет 64 к (65536 б). Поэтому максимальный размер программы…

Var

Za , Zb : ^ real;

k,f,g : Real;

Begin {главная программа}

New (Za) ; New (zb) ;

Za ^ : = 10.5 ; Zb ^ : = 15.2 ;

f : = Zb ^ + Za ^ ; { f = 25.7 }

Zb : =Za;

k : = Zb ^ + Za ^ ; { k = 21 !! }

. . . . . . . . . .

 

4.12.4. Объявление указателей.

 

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

Пример. Type Sm = Array[1..100] Of Integer;

Var Myk : ^ Sm ;

(можно и так Var PT : Array [1..20] Of ^Real; ).

 

4.12.5. Операции с указателями.

 

К динамическим переменным можно применять все операции, которые определены для обычных переменных соответствующих типов.

К самим указателям можно применять:

n операцию присваивания. В этом случае указатель получает значение адреса. Правило: указатели связанные операцией присваивания должны быть одного типа.

n операции сравнения = и <> .

Замечание - обращение к элементам массива Ms[k,n]^ , то есть символ ^ записывается после квадратных скобок.

Создание массива указателей For j : = 1 To N Do

New( Mp[j] );.

Параметром процедуры New() может быть только типизированный указатель. Для работы с нетипизированными указателями предназначены процедуры:

- GetMem(Z, Size) – для резервирования памяти;

- FreeMem(Z, Size) - для освобождения памяти.

Здесь Z – нетипизированный указатель; Size – размер (в байтах) резервируемой или освобождаемой динамической памяти.