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