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.