Въведение в C съюз

Union е дефиниран от потребителя тип данни в с, той позволява да се съхраняват различни елементи от данни от различни типове данни в едно и също място на паметта. Той предоставя ефикасен начин за използване на паметта, тъй като само един член на съюз може да получи достъп във всеки даден момент. Следователно размерът на един съюз във всеки един момент би бил равен на размера на най-големия му елемент. Въпреки че обединението е като структура, основната разлика е, че в една структура се отделя памет за всеки член на структурата, докато в обединението това е споделена памет, която е еквивалентна на размера на най-големия член.

Синтаксис:

Съюзът може да бъде определен по-долу.

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

Членовете на Съюза на C могат да бъдат достъпни чрез справка „UnionReference“. съюз е ключова дума.

Пример за структура и обединение в разпределението на паметта:

Нека покажем разликата между структура и съюз в разпределението на паметта.

Код:

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

изход:

Примери за C Union

Нека видим прилагането на C Union с помощта на примери, споменати по-долу:

Пример №1

Това е примерът за определяне на C съюз и достъп до неговите членове.

Код:

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

Резултат :

Пример №2

По-долу е същият код като по-горе, с изключение на това, че отчетите за печат са пренаредени.

Код:

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

изход:

Ако погледнете внимателно резултата, можете да видите, че стойностите на боклука са били назначени за int и float, защото накрая низът е бил разпределен паметта, т.е., тъй като членовете споделят паметта в съюз, членът, чиято стойност в момента се съхранява ще имат достъп до паметта.

Пример №3

Анонимен съюз е съюз, който не е кръстен, следователно те могат да бъдат използвани във всяка вложена структура или обединения. Членовете на анонимния съюз могат да бъдат пряко достъпни в рамките на тяхното определение. По същия начин анонимната структура може да се използва в анонимен съюз.

Синтаксис на анонимен съюз и структура, както следва:

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

Пример за анонимен структурен съюз вътре в структура:

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

изход:

Тестовата заряда е получила стойност „A“, тъй като скорошната стойност в паметта на обединението е 65, която е присвоена на testNum, следователно съответният ASCII символ се отпечатва.

Забележка: Членовете на съюза имат достъп директно.

Пример за анонимна структура вътре в съюз:

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

изход:

заключение

По този начин съюзът помага за ефективно управление на паметта. Недостатъкът на обединението е, че ще бъде налична само последната въведена стойност за обединението. Той трябва да се използва, когато не е необходимо членове на съюза да имат достъп до него по едно и също време.

Препоръчителни статии

Това е ръководство за C Union. Тук обсъждаме въвеждането, синтаксиса и различни примери за c обединение с реализация на код. Можете също да разгледате следните статии, за да научите повече-

  1. C Ключови думи
  2. Масиви в C програмиране
  3. Палиндром програма в C ++
  4. C Класове за съхранение