Typ wskaźnikowy

Typy wskaźnikowe. Zmienne dotychczas omówionych typów, tj. typów prostych i strukturalnych, charakteryzują się tym, że istnieją przez cały czas wykonywania tej części , w której są zadeklarowane. Są to tzw. zmienne statyczne. W języku Turbo Pascal występują też zmienne dynamiczne reprezentujące obiekty, dla których pamięć jest przydzielana i zwalniana na okreśolne żądanie. Zmienne te nie posiadają identyfikatorów, a odwołanie do nich następuje za pomocą wskaźnika. Wartościami wskaźników są elementy typu wskaźnikowego, które określają adresy pamięci zmiennych dynamicznych.

Definicja wskaźnika

Zastosowanie w programie zmiennych dynamicznych pociąga za sobą konieczność zdefiniowania odpowiednich typów wskaźnikowych. Definicja pojedynczego typu wskaźnikowego ma postać:

TYPE Identyfikator_typu = ^Identyfikator_typu_bazowego;

Gdzie identyfikator_typu_bazowego określa typ, którego dane będą wskazywane przez zmienne definiowanego typu wskaźnikowego. Identyfikator ten może ale nie musi być wcześniej określony. W drugim przypadku konieczne jest jego określenie w tej samej części definiowanej typu (w tym samym zdaniu type), w której występuje definicja określonego typu wskaźnikowego.

TYPE wskaznik = ^zapis;
     zapis = record
      Tekst: String[80];
      Liczba: Integer;
    end;

Deklaracja wskaźnika

Definicja ta wiąże typ wskaznik ze zbiorem wskazań danych typu zapis. Jeśli wprowadzimy teraz deklarację:

VAR adres : wskaznik;
var 
    x : integer;
    p : ^integer;
begin
    x := 100;
    new(p);
    p^ := 5;
    dispose(p);    

    p := @x;
    p^ := 15;
    writeln(x); {15}

to zmiennej wskaźnikowej adres będą mogły być w adresie przypisane adresy pamięci typu zapis

Słowa kluczowe

Jednym ze słów kluczowych jest słowo nil, które oznacza stałą typu wskaźnikowego nie określającą żadnego adresu (nil wskazuje na adres pusty).

Przedefiniowane typy

W języku Turbo Pascal występują także przedefiniowane typy Pointer i PChar

Pointer

Zmienna wskaźnikowa typu Pointer nie wskazuje danych żadnego określonego typu. Są one jednak zgodne z każdym innym typem wskaźnikowym.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License