Както структурата, така и съюзът са дефинирани от потребителя типове данни в езика C и концептуално са едни и същи, но все пак те са различни по някакъв начин като начина, по който паметта се разпределя на членовете им. Те са декларирани по подобен начин, но функционират по различен начин. Те позволяват на потребителя да комбинира различни типове данни под едно име. Докато отделно местоположение в паметта се използва за всеки член при деклариране на променливи на структурата, различните членове на променлива на съюз споделят едно и също място в паметта. Да проучим разликата между структурата и обединението е подробно.

Разлика между структура и съюз

Какво е структура?

Структурата е просто друг определен от потребителя тип данни в C, който позволява на потребителя да комбинира типове данни от различни видове в един тип в блок памет. Структурата може да съдържа както прости, така и сложни типове данни, свързани помежду си, които в противен случай няма да имат смисъл. Всеки член в структурата получава свое собствено място в паметта, така че да може да бъде достъпен и извлечен по всяко време.

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

Ключова дума „структура“ се използва за дефиниране на структура от различни типове данни под едно име. Например, ако искате да създадете база данни за служители, ще трябва да съхранявате данни за име, възраст, телефон и заплата на служителя в едно цяло. Това се прави от ключовата дума „struct“, която след това казва на компилатора, че е декларирана структура.

служител на структурата {

име на низ;

струнна възраст;

струнен телефон;

струнна заплата;

} emp1, emp2;

Тук „служител“ е името на структурата и са създадени две променливи „emp1“ и „emp2“ от типа „служител“. Затварящите скоби трябва да бъдат последвани от запетая (;).

Членовете на дадена структура могат да бъдат достъпни от два типа оператори:

  1. Член-оператор Структура оператор на указател

Какво е съюз?

Това е специален тип данни, използван в C, който позволява на потребителя да съхранява типове данни от различни видове в едно и също място в паметта. Съюзът е доста подобен на структура и може да бъде определен чрез замяна на ключовата дума „структура“ с ключовата дума „съюз“. Членовете наслагват паметта един на друг в един съюз и той е достатъчно голям, за да побере всички негови членове.

Когато променлива е свързана с обединението, компилаторът разпределя паметта, като взема предвид размера на най-голямата памет, така че размерът на обединението е равен на размера на най-големия член на данните. Съюзът може да бъде определен с много членове, но само един член съдържа стойността в даден момент от време.

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

синдикален служител {

име на чар [32];

вътрешна възраст;

плаваща заплата;

};

Тук ключовата дума „съюз“ определя съюза, който е доста подобен на декларацията на структурата. Променливата може да съхранява низ на стойност, която е "име на служителя", цяло число, което е "възрастта на служителя", или плаваща стойност, която представлява "заплатата на служителя".

Разлика между структура и съюз

1. Ключова дума

Ключовата дума „структура“ се използва за дефиниране на структура, докато ключова дума „съюз“ се използва за дефиниране на съюз.

2. Разпределение на паметта

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

3. Достъп на членове

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

4. Размер

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

5. Инициализация

В една структура, няколко члена могат да бъдат инициализирани наведнъж, докато в съюз, само първият член може да бъде инициализиран със стойността на неговия тип.

5. Стойност

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

Структура срещу Съюз

структурасъюз
Ключова дума Struct се използва за дефиниране на структура.Ключова дума Union се използва за дефиниране на съюз.
Членовете не споделят памет в структурата.Членовете споделят пространството на паметта в съюз.
Всеки член може да бъде извлечен по всяко време в дадена структура.Само един член може да получи достъп в даден момент в съюз.
Няколко члена на дадена структура могат да бъдат инициализирани наведнъж.Само първият член може да бъде инициализиран.
Размерът на структурата е равен на сумата от размера на всеки член.Размерът на съюза е равен на размера на най-големия член.
Промяната на стойността на един член няма да повлияе на стойността на друг.Промяната в стойността на един член ще се отрази на стойностите на други членове.
Съхранява различни стойности за всички членове.Съхранява еднаква стойност за всички членове.

резюме

  • Както структурата, така и обединението са дефинирани от потребителя типове данни в C, които са функционално и концептуално еднакви, но в някои отношения са доста различни. И двете съдържат променливи от различни типове данни, но те използват един и същ синтаксис за деклариране на променливи и достъп до членове. Докато една структура е дефинирана от ключовата дума „структура“, съюзът се определя от ключовата дума „съюз“. Всеки член получава отделно място в паметта в структурата, докато в съюз, общото пространство на паметта е еквивалентно на член с най-голям размер. Всички членове споделят едно и също пространство на паметта в съюз. Всеки член във всяка последователност може да получи достъп в структура, докато в съюз, само тази променлива може да получи достъп до стойността, която наскоро се съхранява.

Препратки

  • Канеткар, Яшавант. Нека ни С. Ню Делхи: Публикации на BPB, 2002. Печат
  • Канеткар, Яшавант. Нека ни С. Ню Делхи: Публикации на BPB, 2002. Печат
  • Кинг, К.Н. Програмиране на C: модерен подход. Ню Йорк: W.W. Norton & Company, 1996. Печат
  • Грифитс, Дейвид и Зората Грифитс. Глава първа C. Себастопол: O’Reilly Media, 2011. Печат
  • Кредит за изображения: https://stackoverflow.com/questions/3921931/how-to-visualise-a-graph-of-c-structs-that-contain-point-to-one-another