Операционная система MS - DOS все адресуемое пространство делит на
сегменты. Сегмент - это участок памяти размером 64 К байт. Для зада
ния адреса необходимо определить адрес начала сегмента и смещение от
носительно начала сегмента.
В TURBO PASCAL определен адресный тип Pointer - указатель. Пере
менные типа Pointer
var p: Pointer;
содержат адрес какого - либо элемента программы и занимают 4 байта,
при этом адрес хранится как два слова, одно из них определяет сег
мент, второе - смещение.
Переменную типа указатель можно описать другим способом.
type NameType= ^T;
var p: NameType;
Здесь p - переменная типа указатель, связанная с типом Т с помощью
имени типа NameType. Описать переменную типа указатель можно непос
редственно в разделе описания переменных:
var p: ^T;
Необходимо различать переменную типа указатель и переменную, на
которую этот указатель ссылается. Например если p - ссылка на пере
менную типа Т, то p^ - обозначение этой самой переменной.
Для переменных типа указатель введено стандартное значение NIL,
которое означает, что указатель не ссылается ни к какому объекту.
Константа NIL используется для любых указателей.
Над указателями не определено никаких операций, кроме проверки на
равенство и неравенство.
Переменные типа указатель могут быть записаны в левой части опера
тора присваивания, при этом в правой части может находиться либо
функция определения адреса Addr(X), либо выражение @ X, где @ - унар
ная операция взятия адреса, X - имя переменной любого типа, в том>
числе процедурного.
Переменные типа указатель не могут быть элементами списка ввода
вывода.