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-
- C Słowa kluczowe
- Tablice w programowaniu C.
- Program Palindrome w C ++
- C Klasy pamięci