Wskaźniki
Przykłady
Poniższe przykłady pochodzą z podręcznika J. Bieleckiego: Turbo Pascal 5.5, wyd. WNT, Warszawa, 1996.
{
adresowanie zmiennych nieproceduralnych
Operatory jednoargumentowe wskazania adresu: @, @@
Wynikiem operacji @arg jest dana typu pointer;
arg=nazwa zmiennej | procedury
Wynikiem operacji @@arg jest dana typu pointer;
wskazuje zmienna, bedac argumentem @@
}
const nazwa : string[3] = 'typ';
type znaki = array[0..3] of char;
var wskaz : ^znaki;
begin
wskaz:=@nazwa;
write(wskaz^[1],wskaz^[2],wskaz^[3])
end. { wynik : typ }
{
uzycie @, @@; Bielecki, TP 5.5, s124
}
type
mathType = function(a,b:integer):integer;
mathRef = ^mathType;
var
Math : mathType;
Fix : integer;
{$F+}
function Add(a,b:integer):integer;
begin Add:=a+b; end;
{$F-}
function Inc(p:mathRef; q:integer):integer;
begin Inc:=p^(q,2) end;
begin
Math:=Add;
if @Math=@Add then
Fix:=Inc(@@Math,5);
write(Fix) {7}
end. { wynik: 7}
{
przyklad uzycia roznych zmiennych; Bielecki
}
type
wskaznik = ^integer;
var
wskaz : ^wskaznik;
begin
New(wskaz); { tworzy sie zmienna typu wskaznik }
New(wskaz^); { tworzy sie zmienna typy integer }
wskaz^^:=13; { przypisanie zmiennej Ptr^^ liczby 13 }
writeln(wskaz^^); { wyprowadzenie liczby 13 }
end.
{ uwaga:
napis Ptr^^ :=13 identyfikuje zmienna, a write(Wskaz^^)
reprezentuje stala
}
{
uzycie procedury New
}
uses Crt;
const Fix : word = 13;
var Wskaz : ^word;
begin
clrscr;
New(Wskaz);
wskaz^:=Fix;
write(wskaz^); {13}
end.
program point; type Ar = array[1..7] of integer; ArPtr = ^Ar; procedure as(p: ArPtr; num: integer); begin p^[1]:=num; end; var ws : ArPtr; begin as(ws,12345); as(@ws^[2],4321); writeln(ws^[1],ws^[2]); end.
File translated from TEX by TTH, version 4.03.
On 16 Oct 2013, 21:50.

