Struktuurid

Andmestruktuur programmeerimiskeeles C on grupp muutujaid mis on koondatud ühe nime alla. Need muutujad võivad olla eri tüüpi ning igal muutujal on olemas nimi, mida kasutatakse selle poole pöördumisel.Struktuur on mugav viis gruppeerida seotud infot.

Struktuuri abil on võimalik kirjeldada näiteks isiku andmeid (eesnimi, perekonnanimi, vanus jne), kauba andmeid poes või laos (kauba nimetus, kaba hind, kauba kogus jne) jms.

Struktuuri saab programmeerimiskeeles C kirjeldada järgmiselt:

struct struktuuri_nimi{
     väljatüüp_1 väljanimi_1;
     väljatüüp_2 väljanimi_2;

     väljatüüp_n väljanimi_n;
} struktuur;

Struktruuri deklareerimine:

struct struktuuri_nimi struktuur;

Näiteks, kui soovime kirjeldada struktuuri, mis sisaldaks isikuandmeid:



Siis saame kirjeldada järgmise struktuuri:

struct isik{
     char nimi[21];
     char sugu[2];
     int synniAasta;
     int vanus;
};

Kui soovime struktuuri korraga kirjeldada ja deklareerida, siis saame seda teha nii:

struct isik {
     char nimi[21];
     char sugu[2];
     int synniAasta;
     int vanus;
} mina;

Oleme tekitanud muutuja nimega mina, mille struktuuri kirjeldab isik.

Võime ka kirjelduse ja deklareerimise eraldi kirja panna:

struct isik{
     char nimi[21];
     char sugu[2];
     int synniAasta;
     int vanus;
};

struct isik mina;


Väärtuste omistamine struktuuri väljadele ei erine väärtuste omistamisest tavalistele muutujatele. Näiteks, kui soovime ülalkirjeldatud struktuuri väljadele väärtused määrata, saame seda teha nii:

strcpy(mina.nimi,“Maali”);
strcpy(mina.sugu,”N”);
mina.synniAasta=1986;
mina.vanus=25;

Nagu teistest muutujatest, nii on võimalik ka struktuuridest massiivi moodustada. Piltlikult võib endale sellist massiivi ette kujutada järgmiselt:



Sellisel juhul tekib meil massiiv sobrad, mille elementideks on isikud

Kui kasutame struktuuride massiive, siis on mõislik vastav struktuur ära kirjeldada uue tüübina:

typedef struct {
       char nimi[21];
       char sugu[2];
       int synniAasta;
       int vanus;
} isik ;

Nüüd saame deklareerida vastavate elementidega massiivi:

isik sobrad[10];

NB! Siinkohal on isik muutujatüüp (e. põhimõtteliselt on selline deklareerimine analoogiline meile tuttavate int vektor[10]; double vektor[10] jm. deklareerimistega)



Näide: Kirjeldame struktuuri KAUP, millel on järgmised väljad:

       nimetus (char pikkusega 21)
       tyyp (char pikkusega 21)
       hind (reaalarv)
       kogus (täisarv)

omistame struktuuri väljadele väärtused ning väljastame tulemuse.