Wprowadzenie do C Union

Unia jest zdefiniowanym przez użytkownika typem danych c, pozwala on na przechowywanie różnych elementów danych różnych typów danych w tym samym miejscu w pamięci. Zapewnia efektywny sposób wykorzystania pamięci, ponieważ w danym momencie można uzyskać dostęp tylko do jednego członka związku. Rozmiar związku zatem w dowolnym momencie byłby równy rozmiarowi jego największego elementu. Chociaż związek jest jak struktura, główna różnica polega na tym, że w strukturze oddzielna pamięć jest przydzielana dla każdego elementu struktury, podczas gdy w związku jest to pamięć współdzielona, ​​która jest równoważna wielkości największego elementu.

Składnia:

Związek można zdefiniować jak poniżej.

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

Dostęp do członków Unii C można uzyskać, korzystając z odniesienia „UnionReference”. związek jest słowem kluczowym.

Przykład struktury i unii w alokacji pamięci:

Pokażmy różnicę między strukturą a związkiem w przydziale pamięci.

Kod:

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

Wynik:

Przykłady C Union

Zobaczmy wdrożenie C Union za pomocą przykładów wymienionych poniżej:

Przykład 1

To jest przykład definiowania związku C i uzyskiwania dostępu do jego członków.

Kod:

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

Wyjście :

Przykład nr 2

Poniżej znajduje się ten sam kod, co powyżej, z tą różnicą, że instrukcje drukowania zostały zmienione.

Kod:

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

Wynik:

Jeśli przyjrzysz się uważnie wynikowi, zobaczysz, że wartości śmieci zostały przypisane do int i float, ponieważ w końcu łańcuchowi przydzielono pamięć, tzn. Ponieważ członkowie współużytkują pamięć w związku, członek, którego wartość jest obecnie przechowywana, będzie mieć dostęp do pamięci.

Przykład nr 3

Związek anonimowy jest związkiem, który nie jest nazwany, dlatego można ich używać w dowolnej zagnieżdżonej strukturze lub związkach. Do członków anonimowego związku można uzyskać bezpośredni dostęp w zakresie ich definicji. Podobnie, struktura anonimowa może być używana wewnątrz anonimowego związku.

Składnia anonimowego związku i struktury jest następująca:

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

Przykład anonimowego związku strukturalnego wewnątrz struktury:

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

Wynik:

Testcharowi przypisano wartość „A”, ponieważ ostatnią wartością w pamięci unii jest 65, która została przypisana do testNum, dlatego wypisywany jest odpowiedni znak ASCII.

Uwaga: członkowie związku są dostępni bezpośrednio.

Przykład anonimowej struktury wewnątrz unii:

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

Wynik:

Wniosek

Tak więc związek pomaga w efektywnym zarządzaniu pamięcią. Wadą unii jest to, że dostępna będzie tylko ostatnia wprowadzona wartość dla unii. Należy z niego korzystać, gdy członkowie związku nie muszą być dostępni, aby uzyskać dostęp w tym samym czasie.

Polecane artykuły

To jest przewodnik po C Union. Tutaj omawiamy wprowadzenie, składnię i różne przykłady unii c z implementacją kodu. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-

  1. C Słowa kluczowe
  2. Tablice w programowaniu C.
  3. Program Palindrome w C ++
  4. C Klasy pamięci