В Паскале есть возможность создания динамических переменных с помощью переменных ссылочного типа.
Описание ссылочного типа:
Значением типа указатель является адрес переменной базового типа. Тип указатель занимает 4 байта (сегмент и смещение).
Пример 1. Описание переменных ссылочных типов.
Type t_ptr_real=^real;
t_vect=array[1..100] of char;
Var p1, p2:t_ptr_real; {указатель на вещественное число}
p_vect:^t_vect; {указатель на символьный массив}
Описанные переменные-указатели являются статическими, каждая из них занимает 4 байта. При описании переменные не инициализируются, поэтому их значения считаются неопределенными.
В ТР предопределен ссылочный тип pointer - нетипизованный указатель. Его значением является адрес ячейки памяти.
Начиная с версии ТР7, в ТР реализован тип Pchar = ^Char.
Инициализация переменной ссылочного типа может быть выполнена с помощью оператора присваивания или с помощью подпрограмм выделения памяти.
Ссылочные типы совместимы по присваиванию, если их базовые типы тождественны или один из них является нетипизованным указателем. Существует предопределенная константа nil: pointer (пустой указатель). После присваивания р:=nil указатель p не ссылается ни на какую область памяти. Если переменная р1 уже инициализирована и р1¹ nil, то после присваивания р2:=р1 обе переменные ссылаются на одну и ту же область памяти.
|
|
Тип Pchar, кроме того, совместим по присваиванию с символьным массивом и строковым типом.