Tietue, struct

Tietue (struct) on erilaisten tietojen joukko, joka on yhdistetty yhden nimen alle. Tietueita käytetään tietokantojen yhteydessä, kun samaan tietojoukkoon täytyy tallettaa erityyppistä tietoa. Seuraavassa on esimerkki tietuemäärittelystä työntekijälle.

struct TyontekijaTiedot
{
  char Sukunimi[50];
  char Etunimi[50];
  char Sotu[15];
  int Palkka;
};

TyontekijaTiedot tietuerakenne voidaan ottaa käyttöön seuraavasti:

struct TyontekijaTiedot Tyontekija;

Nyt voidaan antaa työntekijälle nimi

strcpy(Tyontekija.Sukunimi,"Jokunen");

ja palkka

Tyontekija.Palkka=15000;

Edellä olevassa tavassa on se ongelma, miten esitellä 1000 työntekijää? Seuraavassa kappaleessa on osittainen vastaus tähän.


Tietuetaulukot

Tietuetaulukon avulla voidaan esitellä monta tietuetta sisältävä tietokokonaisuus seuraavasti:

struct Varastohyllyt
{
  char Nimike[50];
  int Kolliluku;
};

int main()
{
  int Paikka=0;
  struct Varastohyllyt Hylly[1000];
  strcpy(Hylly[Paikka].Nimike,"Kossu");
  Hylly[Paikka].Kolliluku=10;
  return 1;
}

Esitetty taulukkomäärittely soveltuu tapauksiin, joissa etukäteen tiedetään, kuinka monta jäsentä taulukkoon kuuluu. Osoittimien avulla voidaan käsitellä tietuetaulukoita joustavammin, palaamme niihin myöhemmin.


Union

union on vaihtoehtorakenne, jolla voidaan vaihtoehtoisesti tallettaa haluttuun tietueen kohtaan toisen tyyppistä tietoa, esim:

union Luku // esitellään union:
{
  int iArvo;
  double dArvo;
};

void JokuFunktio()
{
  struct Luku Eka,Toka;
  int iLuku=5;
  double dLuku=10.45;
  Eka.iArvo=iLuku;
  Toka.dArvo=dLuku;
}

Union tietueen osana

Sellaisissa tapaksissa, joissa samaan tietueen kenttään halutaan tallettaa erityyppistä tietoa,
unionia käytetään tietueen osana.

struct TyontekTiedot
{
  char sSukunimi[50];
  char sEtunimi[50];
  union ID
  {
    char sSotu[15];
    int HenkiloID;
  };
 int Palkka;
}

  • No labels
You must log in to comment.