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 tromi 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.
|