Пример фрагмента программы объявления указателя
Type A= array [1..100] of integer; TA= ^ A; {тип указатель на массив} Var P1: ^ integer; {переменная типа указатель на целое число} P2: ^ real; {переменная типа указатель на вещественное число} Указатель, не связанный с каким-либо конкретным типом данных, называется нетипизированным указателем. Для описания нетипизированного указателя в Паскале существует стандартный тип pointer. Описание такого указателя имеет вид: Имя-переменной: pointer; С помощью нетипизированных указателей удобно динамически размещать данные, структура и тип которых меняются в ходе выполнения программы. Значения указателей – адреса переменных в памяти. Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе – смещение. Следовало бы ожидать, что значение одного указателя можно передать другому. На самом деле можно передавать значения только между указателями, связанными с одним типом данных. Указатели на различные типы данных имеют различный тип, причем эти типы несовместимы. Пример фрагмента программы объявления указателя различных типов
Var p1,p2: ^integer; p3: ^real; pp: pointer; ……… p1:= p2; {допустимое действие } p1:= p3; {недопустимое действие} Однако это ограничение не распространяется на нетипизированный указатель. В программе допустимы будут следующие действия: pp:= p3; p1:= pp;
|