You are on page 1of 3

Štruktúra

Podobne ako pole, je aj štruktúra zložený (alebo tiež štruktúrovaný) údajový typ. Môže
obsahovať niekoľko hodnôt navzájom rôznych typov (napr. int, float, char, string, prípadne pole atď.).
Každá hodnota je uložená v samostatnej položke príslušného typu.

Všeobecný tvar definície štruktúry:


struct menoStruktury
{
typPremennej premenna_1;
typPremennej premenna_2; položky
... štruktúry
typPremennej premenna_n;
};

Uvedenou definíciou sa v pamäti nič nevytvára! Je to len predpis pre kompilátor aby vedel aká bude
štruktúra premennej, ktorá bude neskôr deklarovaná na uvedený údajový typ.

Deklarácia premennej na typ štruktúra v zásobníku:

menoStruktury premenna;

Až teraz sa v RAM pamäti, konkrétne v zásobníku, vytvorí miesto pre premennú typu štruktúra.

Príklad:

struct osoba //definícia štruktúry osoba


{
string priezvisko; //prvá položka štruktúry
int vek; //druhá položka štruktúry
float vyska; //tretia položka štruktúry
};

osoba ziak; //deklarácia premennej ziak typu štruktúra


- v pamäti sa vytvorí štruktúrovaná premenná ziak typu štruktúra

ziak meno premennej


priezvisko vek vyska mená položiek

Prístup k položkám premennej typu štruktúra:


K jednotlivým položkám štruktúry sa pristupuje cez operátor . (bodka) nasledovne:
ziak.priezvisko =“Novak“;
ziak
priezvisko vek vyska
N o v a k

ziak.vek =18;
ziak
priezvisko vek vyska
N o v a k 18

ziak.vyska =1.75;
ziak
priezvisko vek vyska
N o v a k 18 1.75

Použitie štruktúry demonštruje program Prog0021.cpp. Stiahnite si ho zo stránky a potom


vyskúšajte! Vytlačte si ho a založte do poznámok!
Dynamické štruktúry
V našich programoch budeme premenné typu štruktúra vytvárať vo voľnom úložišti – budeme
teda pracovať s tzv. dynamickými štruktúrami.
Dynamické štruktúru vytvoríme nasledovne:
menoStruktury *menoPointera = new menoStruktury;

Vo voľnom úložišti sa rezervuje podľa počtu a typu položiek danej štruktúry príslušný počet bajtov
a adresa prvého bajtu sa uloží do ukazateľa menoPointera. So štruktúrou potom pracujeme rovnako ako
so štruktúrou, ktorá je vytvorená v zásobníku – rozdiel je len v prístupovom operátore, nepoužívame . ale
-> .
Alokovanú časť pamäte uvoľníme nasledovne:
detele menoPointera;
Pointer vynulujeme:
menoPointera=0;

Príklad:
osoba *ptZiak = new osoba; //vo voľnom úložišti sa rezervuje príslušný počet bajtov a adresa
//prvého bajtu sa uloží do ptZiak

getline(cin,ptZiak->meno);
cin >> ptZiak->vek;

Použitie dynamického poľa demonštruje program Prog0022.cpp. Stiahnite si ho zo stránky,


skúste určiť čo program vykonáva a potom ho vyskúšajte! Vytlačte si ho a založte do poznámok!

You might also like