ВУЗ:
Составители:
Рубрика:
7
Чтобы  можно  было  присваивать  и  сравнивать  указатели  на  один  и  тот  же  тип, 
описанные в разных местах, а также передавать указатели как параметры подпро-
грамм,  следует  определить  новый  тип-указатель  и  описывать  переменные-
указатели, используя этот тип: 
type pinteger=^integer; 
var pb: pinteger; 
    pb1: pinteger; 
procedure pr(p: pinteger); 
begin 
  ... 
end; 
... 
pb:=pb1;          // верно 
if pb<>pb1 then ; // верно 
pr(pb);           // верно 
К
  типизированным  указателям  применима  операция  разыменовыния  ^ : за-
пись pa^ означает «объект, на который указывает pa» (под объектом здесь пони-
мается область памяти, выделенная программой и трактуемая как переменная или 
константа определенного типа). В частности, если pa хранит адрес переменной a, 
то разыменованный указатель pa^ и имя переменной a эквивалентны, поскольку 
ссылаются на один объект. Вообще, ссылка на объект – это выражение, однознач-
но определяющее этот объект. В нашем примере имя переменной a и выражение 
pa^ являются ссылками на один и тот же объект в памяти.  
Нулевой  указатель  и  указатель  типа  pointer  разыменовывать  нельзя.  При 
разыменовании  переменной-указателя,  имеющей  нулевое  значение,  произойдет 
ошибка
 времени  выполнения,  разыменование же указателя pointer приведет к 
ошибке компиляции. 
Если типизированный указатель хранит адрес записи или массива, то в Delphi 
Pascal при обращении через указатель к полю записи или элементу массива опе-
рацию разыменования можно не использовать. Например: 
type IArr = array [1..100] of integer; 
     Rec = record i,j: real; end; 
var a: IArr; pa: ^IArr; 
    r: Rec;  pr: ^Rec; 
begin 
  pa:=@a; 
  pr:=@r; 
  pa[1]:=2; // вместо pa^[1]:=2 
  pr.i:=3;  // вместо pr^.i:=3 
end
. 
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 3
 - 4
 - 5
 - 6
 - 7
 - …
 - следующая ›
 - последняя »
 
