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.