Uvod u C Uniju
Union je korisnički definirana vrsta podataka u c, omogućava pohranjivanje različitih podatkovnih elemenata različitih vrsta podataka u isti memorijski položaj. Omogućuje efikasan način korištenja memorije jer samo jednom članu sindikata može pristupiti u bilo kojem trenutku. Stoga bi veličina unije bila jednaka veličini njenog najvećeg elementa. Iako je unija poput strukture, glavna razlika je u tome što je u strukturi odvojena memorija dodijeljena svakom članu strukture dok je u uniji zajednička memorija koja je ekvivalentna veličini najvećeg člana.
Sintaksa:
Sindikat se može definirati na sljedeći način.
union UnionName
(
UMember1;
UMember2;
UMember3;
) UnionReference;
Članovima Unije C može se pristupiti referencom 'UnionReference'. union je ključna riječ.
Primjer strukture i unije u raspodjeli memorije:
Pokažimo razliku između strukture i unije u raspodjeli memorije.
Kodirati:
#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;
)
Izlaz:
Primjeri C Unije
Pogledajmo implementaciju C Unije pomoću primjera navedenih u nastavku:
Primjer 1
Ovo je primjer definiranja udruge C i pristupa njenim članovima.
Kodirati:
#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;
)
Izlaz :
Primjer 2
Ispod je isti kod kao i gore, osim što su izjave za ispis preuređene.
Kodirati:
#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;
)
Izlaz:
Ako pažljivo pogledate izlaz, možete vidjeti da su vrijednosti smeća dodijeljene za int i float jer je nizu dodijeljena memorija, na kraju, tj. Budući da članovi dijele memoriju u savezu član čiji je trenutno vrijednost pohranjena imaju pristup memoriji.
Primjer 3
Anonimni savez je unija koja nije imenovana, stoga se oni mogu koristiti unutar bilo koje ugniježđene strukture ili unije. Članovima anonimnog sindikata može se izravno pristupiti u okviru njihove definicije. Slično tome, anonimna struktura može se koristiti unutar anonimne unije.
Sintaksa anonimne unije i strukture kako slijedi:
// Anonymous union example
union
(
char anoUChar;
int anoUNum;
);
// Anonymous structure example
struct
(
char anoSChar;
int anoSNum;
);
Primjer anonimne strukturne unije u strukturi:
#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;
)
Izlaz:
Ispitnom punjenju dodijeljena je vrijednost 'A', jer je nedavna vrijednost u memoriji unije 65 koja je dodijeljena testNumu, te je otisnut odgovarajući ASCII znak.
Napomena: Članovima sindikata pristupa se izravno.Primjer anonimne strukture unutar unije:
#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;
)
Izlaz:
Zaključak
Na taj način, savez pomaže u učinkovitom upravljanju memorijom. Nedostatak sindikata je u tome što će biti dostupna samo posljednja unesena vrijednost za sindikat. Trebalo bi ga koristiti kad članovima sindikata nije potrebno istovremeno pristupiti.
Preporučeni članci
Ovo je vodič za C Union. Ovdje raspravljamo o uvođenju, sintaksi i različitim primjerima sjedinjenja s implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -
- C Ključne riječi
- Nizovi u C programiranju
- Program Palindrome u C ++
- C Klase skladištenja