ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »