Лекция № 18
Оператор присоединения.
Для получения более компактной записи составных имен в ТР предусмотрен оператор присоединения WITH , который записывается в виде
With <список> DO оператор (простой или составной) .
Здесь With (с), Do (делать) – зарезервированные слова; <список> - это ссылки на имена переменных типа запись. Список может содержать несколько ссылок.
Пример использования оператора With.
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 – размер (в байтах) резервируемой или освобождаемой динамической памяти.