4.  Mám ukazovateľ, čo s ním?

4.6  Pointer na štruktúru, operátor ->

Predpokladajme, že sme napísali nasledujúci kód:

typedef  struct {
  char meno[50];
  int vek;
  float plat;
} TOsoba;

TOsoba s;
TOsoba *p = &s;

Definovali sme si nový údajový typ TOsoba - štruktúru (záznam) s 3 prvkami (pole znakov, int a float). Deklarovali sme premenné s  a  p, pričom s je typu TOsoba, p je ukazovateľ na štruktúru typu TOsoba a zároveň sme sme p inicializovali adresou s.

Do štruktúry je potom možno pristupovať
pomocou mena štruktúry s a selektora . s.vek = 22;
pomocou pointeru p zložitejšie (*p).vek = 22;
pomocou pointeru p a operátoru -> jednoducho p->vek = 22;

  Príkaz *p.vek = 22; je nesprávny, lebo operátor . (bodka) má vyššiu prioritu ako operátor dereferencie *. V tomto prípade by bol totiž príkaz vyhodnotený ako *(p.vek) = 22; čo znamená: "na adresu, kam ukazuje obsah premennej p.vek, zapíš hodnotu 22".

Pointery na štruktúry majú (ako uvidíme neskôr) veľký význam predovšetkým pri práci s tzv. dynamickými štruktúrami ako aj pri práci so štruktúrami vo funkciách.