Latest web development tutorials

C Union

Unia to specjalny typ danych, co pozwala na innym miejscu tego samego typu danych przechowywanych w pamięci.Można zdefiniować związek z większą liczbą członków, ale za każdym razem może być tylko jeden członek z wartością. Związki zapewnić sposób wykorzystywać ten sam obszar pamięci w sposób skuteczny.

Definicja unii

Aby zdefiniować unii, należy użyć oświadczeniaUnii i określają strukturę w podobny sposób.Oświadczenie Związek definiuje nowy typ danych z wielu członków. Format sprawozdania Unia jest w następujący sposób:

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

tag Unia jest opcjonalny, każda definicja członkiem jest standardową definicję zmiennych, takich jak int i; lub float f; lub inne ważne definicje zmiennych.Przed końcem wspólnym organem określonym końcowym średnikiem, można określić jedną lub więcej zmiennych Unii, które jest opcjonalne. Poniższa definicja wspólnego typu ciała o nazwie Dane, istnieją trzy członków I, F i STR:

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

Teraz, zmienna typudanych może przechowywać liczbę całkowitą, pływak, lub ciąg.Oznacza to, że zmienna (w tym samym miejscu pamięci) może przechowywać wiele różnych rodzajów danych. Można używać wbudowanych lub zdefiniowanych przez użytkownika typów danych we wspólnym korpusie, ile potrzeba.

Unia powinna być wystarczająco miejsca w pamięci zajęte przez największego członka unii. Na przykład, w powyższym przykładzie, dane zajmie 20 bajtów pamięci przestrzeni, ponieważ każdy członek, przestrzeń zajmowana przez łańcuch jest największe. Poniższy przykład pokazuje powyższy związek zajmowały łączną wielkość pamięci:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Memory size occupied by data : 20

członkiem unii Dostęp

W celu uzyskania dostępu do wspólnych państw członkowskich, używamyoperatora dostępu członkiem (.).Operator dostępu Użytkownik jest okresem nazwy zmiennych i związkowcy naszej unii być dostępne pomiędzy. Można użyć słów kluczowych do definiowania zmiennych typu UnionUnion.Poniższy przykład demonstruje użycie związku:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

Tutaj widzimy wartościI i fczłonków związków są uszkodzone, ponieważ wartości przypisane do zmiennych ostatniego zajętego miejsca w pamięci, co jest powodem CzłonkowieSTRwyjściu nienaruszonym. Teraz spójrzmy na jednej i tej samej instancji, tym razem używamy tylko jednej zmiennej w tym samym czasie, ale również pokazuje główny cel korzystania z unii:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

Tutaj wszyscy członkowie mogą wyjście nienaruszone, ponieważ w tym samym czasie używa tylko jednego członka.