C/C++ Programmierung · 5 min read · Oct 10, 2025

C/C++ Schritt-für-Schritt - Seite 11

11. Schritt-für-Schritt C/C++ — C Programmierung - Vereinigungen

Vereinigungen

| | 1. Einführung

  1. Über Vereinigungen
  2. Deklaration einer Vereinigung
  3. Definition einer Vereinigungsvariablen
  4. Unterschied zwischen Struktur und Vereinigung
  5. Operationen auf Vereinigungen
  6. Geltungsbereich einer Vereinigung |

1. Einführung

| | / 81_union.c /
#include
struct s_emp
{
int eno;
char name[20];
float sal;
};
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
struct s_emp se;
union u_emp ue;
printf(“\nGröße der Mitarbeiterstruktur    :  %d”, sizeof(se));
printf(“\nGröße der Mitarbeitervereinigung      :  %d”, sizeof(ue));
return 0;
} | | | Ausgabe: Größe der Mitarbeiterstruktur : 26
Größe der Mitarbeitervereinigung : 20 |

2. Über Vereinigungen

Wenn eine große Anzahl von Variablen in einem Programm verwendet werden soll, benötigen sie eine große Menge an Speicher. Vereinigungen bieten eine einfachste Möglichkeit, Speicher zu sparen, indem sie die Ersetzungstechnik verwenden. Sie verwenden denselben Speicherort für alle Arten von Variablen.

Eine Vereinigung ist ein Datentyp in C, der das Überlagern von mehr als einer Variablen im selben Speicherbereich ermöglicht.

Eigenschaften von Vereinigungen:

| | 1. Eine Vereinigung speichert Werte unterschiedlicher Typen an einem einzigen Ort im Speicher.

  1. Eine Vereinigung kann einen von vielen verschiedenen Typen von Werten enthalten, aber nur einer wird zur gleichen Zeit gespeichert.
  2. Die Vereinigung hält nur einen Wert für einen Datentyp. Wenn eine neue Zuweisung vorgenommen wird, hat der vorherige Wert keine Gültigkeit.
  3. Es können beliebig viele Mitglieder einer Vereinigung vorhanden sein. Aber die Variable des Vereinigungstyps benötigt den größten Speicher, der von ihren Mitgliedern belegt wird. |

3. Deklaration einer Vereinigung

Eine Vereinigung ist ein Datentyp, durch den Objekte unterschiedlicher Typen und Größen zu unterschiedlichen Zeiten gespeichert werden können. Die Definition einer Vereinigung ist dieselbe wie die einer Struktur. Die einzige Änderung in der Deklaration ist der Austausch des Schlüsselworts union durch das Schlüsselwort struct.

| | |

Beispiel:

| | union ddate
{
int day;
int month;
int year;
}; | union student
{
int sno;
char name[20];
int marks;
float avg;
}; |

4. Definition einer Vereinigungsvariablen

Die Definition einer Vereinigungsvariablen ist dieselbe wie bei einer Struktur und wie bei der Definition eines eingebauten Datentyps wie int.

| | int a; / Gültig /
union date d; / Gültig in C und C++ / |

Berechnung der Größe einer Vereinigung

Jeder Datentyp in C/C++ hat eine festgelegte Größe, d.h. int hat 2 Bytes Größe, float hat 4 Bytes Größe usw. Hier ist die Methode, um die Größe einer Vereinigungsvariablen zu finden.
sizeof:- Diese Funktion wird verwendet, um die Größe einer gegebenen Variablen zu finden.

| | printf(“%d”, sizeof(int)); / 2 /
printf(“%d”, sizeof(float)); / 4 /
printf(“%d”, sizeof(union emp)); / Zeigt die Größe der emp-Vereinigung an / |

5. Unterschied zwischen Strukturen und Vereinigungen

Hier ist der Unterschied zwischen Strukturen und Vereinigungen

StrukturVereinigung **
1. Sie kann unterschiedliche Typen (Variablen) an einem einzigen Ort halten.1. Sie kann unterschiedliche Typen (Variablen) an verschiedenen Orten halten.
2. Sie kann mehr als einen Typ (Variable) enthalten, aber nur einer wird zur gleichen Zeit gespeichert.2. Sie kann mehr als einen Typ (Variable) enthalten, alle werden zur gleichen Zeit im Speicher gespeichert.
3. Es können beliebig viele Mitglieder einer Vereinigung vorhanden sein. Aber die Variable des Vereinigungstyps benötigt den größten Speicher, der von ihrem Mitglied belegt wird.3. Sie benötigt den Speicher der Größe aller ihrer Mitglieder.
4. Bei ihrer Verarbeitung kann nur ein Mitglied zu einem bestimmten Zeitpunkt zugegriffen werden.4. Bei ihrer Verarbeitung können alle Mitglieder jederzeit zugegriffen werden.
5. Der Geltungsbereich der Vereinigung ist die Funktion und der Geltungsbereich ihrer Mitglieder ist ebenfalls derselbe wie die Vereinigung selbst. (Sie können direkt im Programm zugegriffen werden).5. Der Geltungsbereich der Struktur ist nur die Funktion. Strukturmitglieder können nicht direkt im Programm zugegriffen werden.

6. Operationen auf Vereinigungen

Eine Vereinigung ist auch ähnlich wie eine Struktur, sie kann alle Operationen wie Strukturen ausführen. Operationen auf Vereinigungen sind unten aufgeführt.

| | • Eine Vereinigungsvariable kann einer anderen Vereinigungsvariable zugewiesen werden.
• Eine Vereinigungsvariable kann als Parameter an eine Funktion übergeben werden.
• Die Adresse der Vereinigungsvariablen kann mit dem Adressoperator (&) extrahiert werden.
• Eine Funktion kann eine Vereinigung oder einen Zeiger auf eine Vereinigung akzeptieren und zurückgeben. |

| | / 82_union.c /
#include
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
union u_emp ue;
printf(“Geben Sie die Mitarbeiternummer ein  : “); scanf(“%d”, &ue.eno);
printf(“Geben Sie den Mitarbeiternamen ein   : “); scanf(“%s”, ue.name);
printf(“Geben Sie das Mitarbeitergehalt ein  : “); scanf(“%f”, &ue.sal);
printf(“\n\nMitarbeiterdetails sind wie folgt… “);
printf(“%d %s %f “, ue.eno, ue.name, ue.sal);
return 0;
} |

| | Was ist die Ausgabe?
Nur ue.sal ist korrekt. Was ist mit den restlichen Variablen? |

Zu jedem Zeitpunkt wird nur eine der Vereinigungsvariablen einen sinnvollen Wert haben. Nur das Mitglied, das zuletzt geschrieben wurde, kann gelesen werden. Zu diesem Zeitpunkt enthalten andere Variablen Müll. Es liegt in der Verantwortung des Programmierers, die aktive Variable (d.h. die Variable, die zuletzt zugegriffen wurde) im Auge zu behalten.

Hier ist die beste Möglichkeit, die Aufzeichnungen eines Mitarbeiters zu akzeptieren und anzuzeigen.

| | / 83_emp.c /
#include
union u_emp
{
int eno;
char name[20];
float sal;
};
int main()
{
union u_emp ue;
printf(“\nGeben Sie die Mitarbeiternummer ein  : “); scanf(“%d”, &ue.eno);
printf(“\n%d”, ue.eno);
printf(“\nGeben Sie den Mitarbeiternamen ein : “); scanf(“%s”, ue.name);
printf(“\n%s”, ue.name);
printf(“\nGeben Sie das Mitarbeitergehalt ein  : “); scanf(“%f”, &ue.sal);
printf(“\n%f”,ue.sal);
return 0;
} |

7. Geltungsbereich einer Vereinigung

Der Geltungsbereich einer Vereinigung ist anders als der einer Struktur. Eine Strukturvariable kann nur durch ihre Funktionen zugegriffen werden. Während eine Vereinigung und ihre Mitglieder durch ihre Funktion zugegriffen werden können.

| | / 84_scope.c /
#include
int main()
{
union
{
int i;
char c;
float f;
};
i = 10; c = ‘a’; f = 4.5; / Mitglieder der Vereinigung /
printf(“Der Wert von c ist : %c”, c);
return 0;
} |

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.