Обычно переменная хранит некоторые данные. Однако помимо обычных существуют переменные, которые ссылаются на другие переменные. Такие переменные называются указателями. Указатель - это переменная, значением которой является адрес другой переменной или структуры данных. Графически указатель может быть изображен так, как на рис. 8.4.

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

Имя: ЛТип;

где:

шя - имя переменной-указателя;

тип - тип переменной, на которую указывает переменная-указатель; значок Л показывает, что объявляемая переменная является указателем. Приведем примеры объявления указателей:

pi: '"integer; р2: лгеа1;

В приведенном примере переменная pi - это указатель на переменную типа integer, а р2 - указатель на переменную типа real.

Тип переменной, на которую указывает указатель, называют типом указателя. Например, если в программе объявлен указатель р: -^integer, то говорят: "р - указатель целого типа" или " р - это указатель на целое".

В начале работы программы переменная-указатель "ни на что не указывает". В этом случае говорят, что значение указателя равно nil. Зарезервированное слово nil соответствует значению указателя, который ни на что не указывает.

Идентификатор nil можно использовать в инструкциях присваивания и в условиях. Например, если переменные pi и р2 объявлены как указатели, то инструкция

pi := NIL;

устанавливает значение переменной, а инструкция

if р2 = NIL

then ShowMessage('Указатель р2 не инициализирован!');

проверяет, инициализирован ли указатель р2.

Указателю можно присвоить значение - адрес переменной соответствующего типа (в тексте программы адрес переменной - это имя переменной, перед которым стоит оператор @). Ниже приведена инструкция, после выполнения которой переменная р будет содержать адрес переменной п.

р := @п;
Помимо адреса переменной указателю можно присвоить значение другого указателя при условии, что они являются указателями на переменную одного типа. Например, если переменные pi и р2 являются указателями типа integer, то в результате выполнения инструкции р2 := pi;

переменные pi и р2 указывают на одну и ту же переменную.

Указатель можно использовать для доступа к переменной, адрес которой содержит указатель. Например, если р указывает на переменную i, то в результате выполнения инструкции рЛ : = 5;

значение переменной i будет равно пяти. В приведенном примере значок "л" показывает, что значение пять присваивается переменной, на которую указывает переменная-указатель.

Динамические структуры данных || Оглавление || Динамические переменные


Delphi 6. Программирование на Object Pascal



Новости за месяц

  • Ноябрь
    2018
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс