Einführung in C Union

Union ist ein benutzerdefinierter Datentyp in c, der das Speichern verschiedener Datenelemente verschiedener Datentypen in demselben Speicherort ermöglicht. Es bietet eine effiziente Möglichkeit, den Speicher zu nutzen, da zu einem bestimmten Zeitpunkt nur auf ein Mitglied einer Gewerkschaft zugegriffen werden kann. Die Größe einer Union würde daher zu jedem Zeitpunkt der Größe ihres größten Elements entsprechen. Obwohl Vereinigung wie eine Struktur ist, besteht der Hauptunterschied darin, dass in einer Struktur jedem Mitglied der Struktur ein separater Speicher zugewiesen wird, während es sich in der Vereinigung um einen gemeinsamen Speicher handelt, der der Größe des größten Mitglieds entspricht.

Syntax:

Eine Union kann wie folgt definiert werden.

union UnionName
(
UMember1;
UMember2;
UMember3;
) UnionReference;

Auf die C Union-Mitglieder kann über die Referenz 'UnionReference' zugegriffen werden. Gewerkschaft ist ein Schlüsselwort.

Beispiel für Struktur und Vereinigung bei der Speicherzuweisung:

Lassen Sie uns den Unterschied zwischen struct und union bei der Speicherzuweisung demonstrieren.

Code:

#include
struct samp_structure
(
char name1(30);
int e_id;
float e_slry;
char name2(60);
)s;
union s_union
(
char name1(30);
int e_id;
float saly;
)u;
int main()
(
printf("size of structure :%ld bytes \n", sizeof(s));
printf("size of union : %ld bytes\n", sizeof(u));
return 0;
)

Ausgabe:

Beispiele für C Union

Lassen Sie uns die Implementierung von C Union anhand der folgenden Beispiele sehen:

Beispiel 1

Dies ist das Beispiel, um eine C-Union zu definieren und auf ihre Mitglieder zuzugreifen.

Code:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
printf( "record.i : %d\n", t.tint);
t.tf= 200.5;
printf( "record.f : %f\n", t.tf);
strcpy( t.tstr, "Test");
printf( "record.str : %s\n", t.tstr);
return 0;
)

Ausgabe :

Beispiel # 2

Unten steht derselbe Code wie oben, mit der Ausnahme, dass die print-Anweisungen neu angeordnet wurden.

Code:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
t.tf = 200.5;
strcpy( t.tstr, "Test");
printf( "record.i : %d\n", t.tint);
printf( "record.f : %f\n", t.tf);
printf( "record.str : %s\n", t.tstr);
return 0;
)

Ausgabe:

Wenn Sie sich die Ausgabe genau ansehen, können Sie feststellen, dass für int und float Garbage-Werte zugewiesen wurden, da der Zeichenfolge endlich der Speicher zugewiesen wurde, dh, da die Mitglieder den Speicher in einer Union teilen, wird das Mitglied, dessen Wert derzeit gespeichert ist, Zugriff auf den Speicher haben.

Beispiel # 3

Anonyme Vereinigung ist eine Vereinigung, die nicht benannt ist, daher können sie in jeder verschachtelten Struktur oder in allen Vereinigungen verwendet werden. Auf die Mitglieder der anonymen Gewerkschaft kann im Rahmen ihrer Definition direkt zugegriffen werden. Ebenso kann eine anonyme Struktur innerhalb einer anonymen Union verwendet werden.

Syntax der anonymen Union und Struktur wie folgt:

// Anonymous union example
union
(
char anoUChar;
int anoUNum;
);
// Anonymous structure example
struct
(
char anoSChar;
int anoSNum;
);

Beispiel für eine anonyme Strukturvereinigung in einer Struktur:

#include
struct testscope
(
// Anonymous union
union
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
struct testscope ts;
ts.testNum = 65;
// Note that members of union are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Ausgabe:

Dem Testchar wurde der Wert 'A' zugewiesen, da der letzte Wert im Union-Speicher 65 ist, der testNum zugewiesen wurde. Daher wird das entsprechende ASCII-Zeichen gedruckt.

Hinweis: Auf die Gewerkschaftsmitglieder wird direkt zugegriffen.

Beispiel einer anonymen Struktur innerhalb einer Union:

#include
union testscope
(
// Anonymous union
struct
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
union testscope ts;
ts.testNum = 65;
ts.testChar='V';
//Note: The members of struct are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Ausgabe:

Fazit

Auf diese Weise hilft die Gewerkschaft bei der effizienten Verwaltung des Speichers. Der Nachteil der Union ist, dass nur der zuletzt eingegebene Wert für die Union verfügbar ist. Es sollte verwendet werden, wenn Gewerkschaftsmitglieder nicht gleichzeitig erreichbar sein müssen.

Empfohlene Artikel

Dies ist ein Leitfaden für C Union. Hier diskutieren wir die Einführung, die Syntax und verschiedene Beispiele für die Vereinigung mit der Codeimplementierung. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.

  1. C Schlüsselwörter
  2. Arrays in C-Programmierung
  3. Palindrome-Programm in C ++
  4. C Speicherklassen