Както структурата, така и обединението са дефинирани от потребителя типове данни в езика на C и в концептуално отношение са едни и същи, но все пак те са различни по някакъв начин като начина, по който паметта се разпределя на членовете им. Те са декларирани по подобен начин, но функционират по различен начин. Те позволяват на потребителя да комбинира различни типове данни под едно име. Докато отделно местоположение в паметта се използва за всеки член при деклариране на променливи на структурата, различните членове на променлива на съюз споделят едно и също място в паметта. Нека да проучим разликата между структура и съюз е подробно.
Структурата е просто друг определен от потребителя тип данни в C, който позволява на потребителя да комбинира типове данни от различни видове в един тип в блок памет. Структурата може да съдържа както прости, така и сложни типове данни, свързани помежду си, които в противен случай няма да имат смисъл. Всеки член в структурата получава свое собствено място в паметта, така че да може да бъде достъпен и извлечен по всяко време.
Структурата се използва, когато много данни се нуждаят от групиране, като директория, която съхранява информация за много членове в книга или адресна книга, която съхранява цялата информация за един контакт - име, адрес, номер за контакт и т.н. Адресът на всеки член ще бъде във възходящ ред, което означава, че паметта на всеки член ще започне с различни стойности на изместване. Промяната на стойността на един член няма да има ефект върху други членове.
Ключова дума „struct“ се използва за дефиниране на структура от различни типове данни под едно име. Например, ако искате да създадете база данни за служители, ще трябва да съхранявате данни за името, възрастта, телефона и заплатата на служителя под едно цяло. Това се прави от ключовата дума 'struct', която след това казва на компилатора, че е декларирана структура.
служител на структурата
име на низ;
струнна възраст;
струнен телефон;
струнна заплата;
emp1, emp2;
Тук „служител“ е името на структурата и са създадени две променливи „emp1“ и „emp2“ от типа „служител“. Затварящите скоби трябва да бъдат последвани от запетая (;).
Членовете на дадена структура могат да бъдат достъпни от два типа оператори:
Това е специален тип данни, използван в C, който позволява на потребителя да съхранява типове данни от различни видове в едно и също място в паметта. Съюзът е доста подобен на структура и той може да бъде дефиниран чрез замяна на ключовата дума „struct“ с ключовата дума „union“. Членовете наслагват паметта един на друг в един съюз и той е достатъчно голям, за да побере всички негови членове.
Когато променлива е свързана с обединението, компилаторът разпределя паметта, като взема предвид размера на най-голямата памет, така че размерът на обединението е равен на размера на най-големия член на данните. Съюзът може да бъде определен с много членове, но само един член съдържа стойността в даден момент от време.
Адресът е един и същ за всички членове на съюза, което означава, че всеки член започва с една и съща стойност на компенсиране. И промяната на стойността на един член ще повлияе на стойностите на други членове. Съюзът може да се използва, когато искате да запазите нещо, което е един от няколко типа данни.
синдикален служител
име на чар [32];
вътрешна възраст;
плаваща заплата;
;
Тук ключовата дума 'union' определя обединението, което е доста подобно на декларацията на структурата. Променливата може или да съхранява низ на стойност, която е "име на служителя", цяло число, което е "възрастта на служителя", или плаваща стойност, която представлява "заплатата на служителя".
1. Ключова дума
Ключовата дума „структура“ се използва за дефиниране на структура, докато ключова дума „съюз“ се използва за дефиниране на съюз.
2. Разпределение на паметта
Отделно пространство за памет е отделено за членовете в структурата и членовете имат различни адреси, които не споделят памет. Съюз, от друга страна, споделя едно и също място в паметта за всички свои членове, така че е разпределено споделеното място в паметта.
3. Достъп на членове
Съюзът съхранява еднократна стойност наведнъж за всички свои членове, като предоставя достъп до само един член наведнъж. Докато няколко стойности могат да се съхраняват в структура, така че всяка стойност на член може да бъде достъпна и извлечена по всяко време.
4. Размер
Размерът на една структура е равен на сумата от размера на всички членове или повече, докато размерът на съюз е равен на размера на най-големия член член.
5. Инициализация
В една структура, няколко члена могат да бъдат инициализирани наведнъж, докато в съюз, само първият член може да бъде инициализиран със стойността на неговия тип.
5. Стойност
Структурата може да съхранява различни стойности на всички членове и промяната в стойността на един член няма да има никакъв ефект върху стойностите на другите членове. Докато един съюз съхранява еднаква стойност за всички свои членове и промяната на стойността на един член ще повлияе на стойността на други.
структура | съюз |
Ключова дума Struct се използва за дефиниране на структура. | Ключова дума Union се използва за дефиниране на съюз. |
Членовете не споделят памет в структурата. | Членовете споделят пространството на паметта в съюз. |
Всеки член може да бъде извлечен по всяко време в дадена структура. | Само един член може да получи достъп в даден съюз в даден момент. |
Няколко члена на дадена структура могат да бъдат инициализирани наведнъж. | Само първият член може да бъде инициализиран. |
Размерът на структурата е равен на сумата от размера на всеки член. | Размерът на съюза е равен на размера на най-големия член. |
Промяната на стойността на един член няма да повлияе на стойността на друг. | Промяната в стойността на един член ще се отрази на стойностите на други членове. |
Съхранява различни стойности за всички членове. | Съхранява еднаква стойност за всички членове. |