Johdanto C-unioniin

Union on käyttäjän määrittelemä tietotyyppi c: ssä, se sallii eri tietotyyppien eri dataelementtien tallentamisen samaan muistipaikkaan. Se tarjoaa tehokkaan tavan muistin hyödyntämiseen, koska vain yhteen liiton jäseneseen pääsee käsiksi milloin tahansa. Unionin koko olisi siis milloin tahansa yhtä suuri kuin sen suurimman elementin koko. Vaikka liitto on kuin rakenne, tärkein ero on, että rakenteessa varataan erillinen muisti jokaiselle rakenteen jäsenelle, kun taas liitossa se on jaettu muisti, joka vastaa suurimman jäsenen kokoa.

Syntaksi:

Liitto voidaan määritellä seuraavasti.

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

C-unionin jäseniin pääsee viitteellä 'UnionReference'. unioni on avainsana.

Esimerkki rakenteesta ja liitosta muistin allokoinnissa:

Osoitetaanpa erot rakenteen ja liitoksen välillä muistin allokoinnissa.

Koodi:

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

lähtö:

Esimerkkejä C-unionista

Katsotaanpa C-unionin toteutusta alla mainittujen esimerkkien avulla:

Esimerkki # 1

Tämä on esimerkki C-liiton määrittelemiseksi ja jäsenten tavoittamiseksi.

Koodi:

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

Tulos :

Esimerkki 2

Alla on sama koodi kuin yllä, paitsi että tulostuslausunnot on järjestetty uudelleen.

Koodi:

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

lähtö:

Jos tarkastelet tulosta huolellisesti, voit nähdä, että roskiarvot on määritetty int- ja float-arvoille, koska merkkijonolle oli vihdoin varattu muisti, ts. Koska jäsenet jakavat muistin unionissa, jäsen, jonka arvo on tällä hetkellä tallennettu, tulee pääsy muistiin.

Esimerkki 3

Anonyymi liitto on liitto, jota ei nimetä, joten niitä voidaan käyttää minkä tahansa sisäkkäisen rakenteen tai liitoksen sisällä. Anonyymin liiton jäseniin pääsee suoraan heidän määritelmänsä puitteissa. Samoin nimettömää rakennetta voidaan käyttää nimettömän liiton sisällä.

Seuraavat nimettömän liitoksen syntaksi ja rakenne:

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

Esimerkki rakenteen sisällä olevasta nimettömästä rakenneliitosta:

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

lähtö:

Testaajalle on annettu arvo 'A', koska viimeisin arvo unionimuistissa on 65, joka annettiin testiNumille, joten vastaava ASCII-merkki tulostetaan.

Huomaa: Unionin jäseniin pääsee suoraan.

Esimerkki nimettömästä rakenteesta unionin sisällä:

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

lähtö:

johtopäätös

Siksi liitto auttaa muiston tehokkaassa hallinnassa. Liiton haittana on, että vain viimeinen liittoon syötetty arvo on käytettävissä. Sitä tulisi käyttää, kun unionin jäsenten ei tarvitse olla käytettävissä pääsyyn samanaikaisesti.

Suositellut artikkelit

Tämä on opas C Unioniin. Tässä keskustellaan johdannosta, syntaksista ja erilaisista esimerkeistä c unionista koodin toteutuksen kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja-

  1. C Avainsanat
  2. Ryhmät C-ohjelmoinnissa
  3. Palindrome-ohjelma C ++: ssa
  4. C Tallennusluokat