Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 4 стр.

UptoLike

Составители: 

6
При этом говорят, что pa указывает на a. Указатель может также хранить специ-
альное значение, задаваемое предопределенной константой nil. Это «нулевое
значение» для указателей, означающее, что указатель никуда не указывает. Будем
называть такой указатель нулевым и изображать его следующим образом:
pa
Типизированные указатели разных типов несовместимы по присваиванию.
Однако типизированный и бестиповой указатель совместимы по присваиванию в
обе стороны. Указатели одного типа, а также типизированный и бестиповой ука-
затель можно сравнивать на равенство и неравенство. Далее приводятся примеры
допустимых действий с указателями:
var a: integer;
r: real;
pa,pa1: ^integer;
p,p1: pointer;
pr: ^real;
begin
pa:=@a;
p:=@a;
pa:=p;
p:=pa;
p:=nil;
pa:=nil;
if
pa=pa1 then ;
if pa<>p then ;
...
Следующие действия, наоборот, являются недопустимыми и вызовут ошибку
компиляции, поскольку выполняются над указателями, имеющими различный ба-
зовый тип:
pr:=pa; // ошибка: несовместимые типы
if pr=pa then; // ошибка: несовместимые типы
Следует помнить, что в языке Pascal принята именная эквивалентность типов.
Поэтому в следующем примере переменные pb и pb1 считаются принадлежащи-
ми к разным типам:
var pb: ^integer;
pb1: ^integer;
begin
pb:=pb1; // ошибка компиляции!
if pb<>pb1 then ; // ошибка компиляции!
...