next up previous contents index
Nächste Seite: 5.4 Aufzählungstyp Aufwärts: 5. Strukturierte Datentypen Vorherige Seite: 5.2 Strukturen   Inhalt   Index


5.3 Union

Alle Komponenten der Union werden auf dem gleichen Speicherbereich überlappend abgebildet. Die Typdeklaration

union <union_bezeichner>
 {
   <Datendeklaration>
 };

erlaubt die Deklaration von Variablen diesen Typs

[union] <union_bezeichner> <var_bezeichner>;

Der Zugriff auf Komponenten der Union erfolgt wie bei einer Struktur.

//	Union
#include <iostream.h>
main()
{
 union operand           // new  union
  {
    int    i;
    float  f;
    double d;            // longest data
  };
 operand u;              // declare variable
 
 cout << endl << "Size (operand) : " 
      << sizeof(u) << " Bytes" << endl; 
 
 u.i = 123;             // Init as int
 cout << endl << u.i << "  " << u.f << "  " << u.d << endl;
 
 u.f = 123;             // Init as float
 cout << ... 

 u.d = 123;             // Init as double
 cout << ...
}
(siehe Ex530.cc)

Der Speicherplatzbedarf einer Union richtet sich nach der größten Komponente (hier¸ sizeof(double) = 8). Die Union wird benutzt, um Speicherplatz zu sparen, sollte jedoch wegen der Fehlermöglichkeiten erfahrenen Programmierern vorbehalten bleiben (d.h., keine Verwendung im Praktikum).
\begin{center}\vbox{\input{kap530.pstex_t}
}\end{center}


Gundolf Haase 2004-01-15