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

Съдържание:

Anonim

Какво представлява структурата?

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

Всички структурни елементи се съхраняват на съседни места в паметта. Променливата на типа структура може да съхранява повече от един елемент от различни типове данни под едно име.

В този урок ще научите:

  • Какво представлява структурата?
  • Какво е съюз
  • Синтаксис на деклариране на структура
  • Пример за структура в C програмиране
  • Синтаксис на Деклариране на съюз
  • Пример за програмиране на съюз в C
  • Структура Vs. Съюз
  • Предимства на структурата
  • Предимства на обединението
  • Недостатъци на структурата
  • Недостатъци на съюза

Какво е съюз

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

Синтаксис на деклариране на структура

struct [name of the structure]{type member1;type member2;type member3;};

Структурата се декларира с помощта на ключовата дума "struct" и името на структурата. Номер 1, номер 2, номер 3 са отделни членове на структурата. Частта на тялото се завършва с точка и запетая (;).

Пример за структура в C програмиране

#include struct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}

В горната програма се създава структура, наречена студент. Тази структура има три члена с данни: 1) име (низ), 2) roll_no (цяло число) и 3) марки (плаващ).

След това се създава структурна променлива sdt, която съхранява информацията за студентите и я показва на екрана на компютъра.

Изход:

Въведете следната информация:

Въведете име на студент: Джеймс

Въведете номер на студентски списък: 21

Въведете студентски оценки: 67

Въведената от вас информация е:

Име на студент: Джон

Номер на студентски списък: 21

Студентски оценки: 67,0

Синтаксис на Деклариране на съюз

union [name of union]{type member1;type member2;type member3;};

Union се декларира с помощта на ключовата дума "union" и името на union. Номер 1, номер 2, номер 3 са индивидуални членове на съюза. Частта на тялото се завършва с точка и запетая (;).

Пример за програмиране на съюз в C

#include union item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}

Изход:

1101109601

20.199892

а

В горната програма можете да видите, че стойностите на x и y се повреждат. Само променлива ch отпечатва очаквания резултат. Това е така, защото в обединение мястото на паметта се споделя между всички типове данни на членовете.

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

Структура Vs. Съюз

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

Структура Съюз
Можете да използвате ключова дума struct, за да дефинирате структура. Можете да използвате ключова дума union, за да определите съюз.
На всеки член в структурата се присвоява уникално място в паметта. Като обединение, местоположението в паметта се споделя от всички членове на данните.
Промяната на стойността на един член на данни няма да повлияе на други членове на данни в структурата. Промяната на стойността на един член на данни ще промени стойността на другите членове на данни в обединението.
Тя ви позволява да инициализирате няколко члена наведнъж. Тя ви позволява да инициализирате само първия член на обединението.
Общият размер на структурата е сбор от размера на всеки член на данните. Общият размер на обединението е размерът на най-големия член на данни.
Използва се главно за съхранение на различни типове данни. Използва се главно за съхраняване на един от многото налични типове данни.
Той заема място за всеки член, записан във вътрешни параметри. Той заема място за член с най-голям размер, записан във вътрешни параметри.
Можете да извлечете всеки член наведнъж. Можете да получите достъп до един член наведнъж в съюза.
Той поддържа гъвкав масив. Той не поддържа гъвкав масив.

Предимства на структурата

Ето плюсове / ползи от използването на структурата:

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

Предимства на обединението

Ето плюсове / ползи за използването на съюз:

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

Недостатъци на структурата

Ето минуси / недостатъци за използване на структурата:

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

Недостатъци на съюза

Тук има минуси / недостатъци за използване на съюз:

  • Можете да използвате само един член на съюза наведнъж.
  • Всички обединени променливи не могат да бъдат инициализирани или използвани с променливи стойности наведнъж.
  • Съюзът определя едно общо място за съхранение на всички свои членове.

КЛЮЧОВИ РАЗЛИКИ:

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