Увод у Ц Унију

Унион је кориснички одређени тип података у ц, омогућава складиштење различитих податковних елемената различитих типова података који се смештају на исту меморијску локацију. Омогућава ефикасан начин коришћења меморије, јер само једном члану синдиката може приступити у било којем тренутку. Стога би величина уније била једнака величини њеног највећег елемента. Иако је унија попут структуре, главна разлика је у томе што је у структури одвојена меморија додељена сваком члану структуре, док је у унији заједничка меморија која је еквивалентна величини највећег члана.

Синтакса:

Синдикат се може дефинисати као испод.

union UnionName
(
UMember1;
UMember2;
UMember3;
) 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;
)

Излаз:

Примери Ц Уније

Да видимо имплементацију Ц Уније помоћу примјера наведених у наставку:

Пример # 1

Ово је пример да се дефинише унија Ц и приступ њеним члановима.

Шифра:

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

Излаз:

Ако пажљиво погледате излаз, можете видети да су смеће додељене за инт и флоат јер је низу додељена меморија, на крају, тј. Пошто чланови деле меморију у савезу члан чији је вредност тренутно сачувана имају приступ меморији.

Пример бр. 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;
)

Излаз:

Тестцхар-у је додељена вредност 'А', јер је недавна вредност у меморији синдиката 65 која је додељена тестНум-у, те је отиснут одговарајући АСЦИИ знак.

Напомена: Члановима синдиката приступа се директно.

Пример анонимне структуре унутар уније:

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

Излаз:

Закључак

На тај начин, савез помаже у ефикасном управљању меморијом. Недостатак синдиката је у томе што ће бити доступна само последња унета вредност за синдикат. Требало би да се користи када члановима синдиката није потребно да им се истовремено приступа.

Препоручени чланци

Ово је водич за Ц Унион. Овде смо разговарали о увођењу, синтакси и различитим примерима ц обједињавања са имплементацијом кода. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Ц Кључне речи
  2. Низови у Ц програмирању
  3. Палиндроме програм у Ц ++
  4. Ц Класе складиштења

Категорија: