Strukturen (3/5)

Unions

Unions werden analog zu structs definiert. Allerdings werden alle Komponenten der Struktur an derselben Speicherstelle gespeichert. Dies hat den Vorteil Speicherplatz sparen zu können, wenn eine Komponente entweder die eine oder andere Form hat. Allerdings muß der Programmierer selber darauf achten welches Format gerade in Gebrauch ist, da auf alle Komponenten zugegriffen werden kann. Ein Zugriff auf falsche Komponenten wird i. allg. falsche Ergebnisse liefern.

  union uniontyp
  {
    char datum[10];    // z.B. '1''3''.''1''0''.''1''9''9''9''
    long date;         // z.B. 19991013
  } dat1, dat2;

dat1.datum[0]='1'; dat1.datum[1]='3'; dat1.datum[2]='.'; dat1.datum[3]='0'; dat1.datum[4]='5'; dat1.datum[5]='.'; dat1.datum[0]='6'; dat1.datum[7]='9'; dat1.datum[8]='9'; dat1.datum[9]='8'; dat2.date = dat1.date; // erlaubt, liefert aber falsches Datum!! for (int i = 0; i < 10; i++) dat2.datum[i] = dat1.datum[i]; // so klappt es