Uvod v Unijo C

Union je uporabniško določen tip podatkov v c, ki omogoča shranjevanje različnih podatkovnih elementov različnih podatkovnih vrst, ki jih je mogoče shraniti na isto pomnilniško mesto. Omogoča učinkovit način uporabe pomnilnika, saj lahko v katerem koli trenutku dostopa samo en član zveze. Velikost zveze bi bila torej kadar koli enaka velikosti njenega največjega elementa. Čeprav je zveza kot struktura, je glavna razlika v tem, da je v strukturi ločen pomnilnik dodeljen vsakemu članu strukture, medtem ko je v uniji združen pomnilnik, ki je enak velikosti največjega člana.

Sintaksa:

Zveza je lahko opredeljena kot spodaj.

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

Do članov Unije Unije lahko dostopate s sklicem „UnionReference“. union je ključna beseda.

Primer strukture in združevanja v dodelitvi pomnilnika:

Pokažimo razliko med strukturo in združevanjem pri dodeljevanju pomnilnika.

Koda:

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

Izhod:

Primeri Unije

Poglejmo izvajanje Unije Unije s pomočjo spodnjih primerov:

Primer # 1

To je primer za določitev zveze C in dostop do njenih članov.

Koda:

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

Izhod :

Primer # 2

Spodaj je ista koda kot zgoraj, le da so izjave o tiskanju preurejene.

Koda:

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

Izhod:

Če natančno pogledate na izhod, lahko vidite, da so bile vrednosti smeti dodeljene za int in float, ker je bil niz dodeljen pomnilnik, končno, tj. Ker si člani delijo spomin v združenju, član, katerega vrednost je trenutno shranjena, bo imeti dostop do pomnilnika.

Primer # 3

Anonimna zveza je zveza, ki ni imenovana, zato jih je mogoče uporabiti znotraj katere koli ugnezdene strukture ali zveze. Člani anonimnega sindikata lahko neposredno dostopajo v okviru svoje opredelitve. Podobno se lahko uporabi anonimna struktura znotraj anonimne zveze.

Sintaksa anonimne zveze in strukture:

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

Primer zveze anonimnih struktur znotraj strukture:

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

Izhod:

Testni polnilnici je bila dodeljena vrednost 'A', ker je nedavna vrednost v pomnilniku zveze 65, ki je bila dodeljena testNum-u, zato je natisnjen ustrezen znak ASCII.

Opomba: Do članov sindikata lahko dostopate neposredno.

Primer anonimne strukture znotraj zveze:

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

Izhod:

Zaključek

Tako zveza pomaga pri učinkovitem upravljanju spomina. Pomanjkljivost zveze je, da bo na voljo samo zadnja vnesena vrednost. Uporabljati ga je treba, kadar članom zveze ni treba imeti dostopa do njih hkrati.

Priporočeni članki

To je vodnik za C Union. Tukaj razpravljamo o uvodu, sintaksi in različnih primerih povezave c z implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. C Ključne besede
  2. Nizi v C programiranju
  3. Program Palindrome v C ++
  4. C Razredi za shranjevanje