Указатели

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



Рис. 8.5.
Переменная-указатель


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


Имя: ^ Тип;

где:



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

  • Тип — тип переменной, на
    которую указывает переменная-указатель;

значок ^
показывает, что объявляемая переменная является указателем.


Приведем
примеры объявления указателей:


p1: ^integer; р2: ^real;

В приведенном
примере переменная p1 — это указатель на переменную типа integer, a p2 —
указатель на переменную типа real.


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


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


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


p1 := NIL;

устанавливает
значение переменной, а инструкция
if р2 = NIL then ShowMessage('Указатель р2 не инициализирован!');

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


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


р := @n;

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


p2 := p1;

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


Указатель можно
использовать для доступа к переменной, адрес которой содержит указатель.
Например, если р указывает на переменную 1, то в результате выполнения
инструкции


р^ : = 5;

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: