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 -

  1. C Ključne riječi
  2. Nizovi u C programiranju
  3. Program Palindrome u C ++
  4. C Klase skladištenja

Kategorija: