Latest web development tutorials

C Gewerkschaft

Union ist eine besondere Art von Daten, so dass Sie an einen anderen Ort in der gleichen Art von Daten im Speicher abgelegt.Sie können eine Vereinigung mit mehr Mitgliedern definieren, aber jederzeit kann es nur ein Mitglied mit dem Wert sein. Unions bieten eine Möglichkeit, die gleiche Speicherstelle in wirksamer Weise zu nutzen.

Definition der Vereinigung

Um eine Gewerkschaft zu definieren, müssen Sieunion - Anweisungen verwenden, und die Struktur in ähnlicher Weise definieren.Union-Anweisung definiert eine neue Datentyp, mit einer Vielzahl von Elementen. Union-Anweisung Format ist wie folgt:

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

Union tag optional ist, ist jedes Mitglied Definition der Standard - Definition einer Variablen, wie int i; oder f schwimmen oder andere gültige Variablendefinitionen.Vor dem Ende des gemeinsamen Körpers endgültige Semikolon definiert ist, können Sie eine oder mehrere der Union Variablen angeben, die optional ist. Die folgende Definition eines gemeinsamen Körper-Typ namens Daten gibt es drei Mitglieder i, f und str:

union Data
{
   int i;
   float f;
   char  str[20];
} data;  

Nun kann die variableDatentyp eine ganze Zahl speichern, einen Schwimmer oder einen String.Dies bedeutet, daß eine Variable (die gleiche Speicherstelle) mit einer Vielzahl von verschiedenen Arten von Daten speichern kann. Sie können alle eingebauten oder benutzerdefinierten Datentypen in einem gemeinsamen Körper verwenden, wie gebraucht.

Union sollte durch das größte Mitglied der Union besetzt genug Speicher sein. Zum Beispiel in dem obigen Beispiel werden die Daten 20 Bytes Speicherplatz belegen, weil jedes Element, wobei der Raum durch den String besetzt am größten ist. Das folgende Beispiel soll die obige Vereinigung zeigen, belegt die Gesamtspeichergröße:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Memory size occupied by data : 20

Zugang Gewerkschaftsmitglied

Um den gemeinsamen Mitgliedsstaaten zugreifen zu können , verwenden wirden Member - Access-Operator (.).Mitglied Zugang Betreiber ist eine Periode Variablennamen und Gewerkschaftsmitglieder unserer Vereinigung zwischen zugegriffen werden. Sie können das Schlüsselwort verwenden , um Variablenunion Union Typ definieren.Das folgende Beispiel zeigt die Verwendung einer Gewerkschaft:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

Hier können wir die Werte voni und fGewerkschaftsmitglieder sehen sind beschädigt, da die Werte für die Variablen des letzten besetzten Speicherplatz zugewiesen, die der Grund , warumstrMitglieder intakt ausgegeben wird. Lassen Sie uns an ein und derselben Instanz Nun schauen wir diesmal nur eine Variable zur gleichen Zeit verwenden, zeigt es auch der Hauptzweck einer Vereinigung mit:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

data.i : 10
data.f : 220.500000
data.str : C Programming

Hier werden alle Mitglieder ausgeben kann intakt, weil zur gleichen Zeit benutzt nur ein Mitglied.