<<
>>

Тип Указатель

Тип данных Указатель задает множество значений, которые соответствуют адресам переменных определенного типа, называемого базовым типом. Синтаксис: л; Идентификатор типа>; Например: Туре TCoord = Record X, Y: Real End; PTCoord = ^TCoord; Var PI, P2, P3 : PTCoord; Point : TCoord; P : Pointer; При объявлении переменной типа PTCoord резервируется память под физический адрес переменной типа TCoord (но не под сам тип TCoord).
Присвоить значение переменной типа указатель можно двумя путями: • разместить в памяти новую (динамическую) переменную с помощью стандартной процедуры New с параметром типа указатель, в который после выполнения процедуры будет занесено значение адреса размещения; • присвоить значение адреса размещения объявленной переменной базового типа (т. е. статической переменной), используя знак операции Процедура New отводит новую область в динамической памяти для переменной и сохраняет адрес этой области в переменной типа указатель. Знак операции «@» устанавливает переменную типа указатель на область памяти, содержащую объявленную переменную.
Зарезервированное слово nil обозначает константу с пустым значением указателя. Встроенный тип Pointer обозначает нетипизированный указатель, т. е. указатель, который не указывает ни на какой определенный тип. Как и значение, обозначаемое словом nil, значения типа Pointer совместимы со всеми другими типами указателей. Для приведенных выше объявлений справедливы следующие операторы: New(Pl) ; Р2 := @Point; New(Р); РЗ := Р; В ЯП Ра$са1 определен ряд стандартных процедур и функций дня переменных типа указатель (табл. 3.17).
Таблица 3.17. Перечень процедур и функций над указателями

Указатели, определяющие адреса переменных разного типа, сами являются переменными разного типа, и для них недопустимо использование оператора присваивания.

Исключение составляет тип Pointer, который совместим по присваиванию с любым другим типом указатель. К указателям одного типа можно применять операции сравнения = и о. Чтобы получить непосредственно значение переменной, адрес которой содержится в указателе, необходимо после имени указателя поставить знак «Л», например: Point := Р1Л; Р2Л := Point; Константы с типом Указатель. Объявление константы типа Указатель обычно содержит знак операции «@" и идентификатор константного значения некоторого типа, например: Туре TDirection = (Left, Right, Up, Down); TNodePtr = ^Node; TNode = Record Value : TDirection; Next : TNodePtr; End; Const N1: TNode = (Value: Down;Next: nil); N2: TNode = (Value: Up; Next: @N1); N3: TNode = (Value: Right;Next: @N2); N4: TNode = (Value: Left;Next: 0N3) ; DirectionTable: TNodePtr = 0N4; В приведенном примере необходимо обратить внимание на то, что синтаксис языка разрешает объявлять тип-указатель перед объявлением базового типа, например, в случае, когда речь идет о формировании последовательностей структур данных типа Запись со ссылками друг на друга.
<< | >>
Источник: О. Л. Голицына, Т. Л. Партыка, И. И. Попов. ЯЗЫКИ ПРОГРАММИРОВАНИЯ. 2008

Еще по теме Тип Указатель:

  1. УКАЗАТЕЛЬ СОКРАЩЕНИЙ
  2. АЛФАВИТНО-ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
  3. Алфавитно-предметный указатель
  4. Алфавитно-предметный указатель
  5. Алфавитно-предметный указатель
  6. ВОСПРИЯТИЕ ТИП
  7. ОБЪЕКТ СЕКСУАЛЬНЫЙ: ВЫБОР: ТИП
  8. ОБЩЕНИЕ: ТИП ВЕДУЩИЙ
  9. ВИВАЦИЯ: ТИП ДЫХАНИЯ
  10. ХАРАКТЕР: ТИП