Verschil tussen structuur en unie in C
Wat is structuur?
Structuur is een door de gebruiker gedefinieerd gegevenstype in de programmeertaal C dat logisch gerelateerde gegevensitems van verschillende gegevenstypen combineert.
Alle structuurelementen worden opgeslagen op aangrenzende geheugenlocaties. De structuurtypevariabele kan meer dan รฉรฉn gegevensitem van verschillende gegevenstypen onder รฉรฉn naam opslaan.
Wat is Unie
Union is een door de gebruiker gedefinieerd gegevenstype, net als een structuur. Union combineert objecten van verschillende soorten en maten met elkaar. De unievariabele wijst de geheugenruimte toe die gelijk is aan de ruimte voor de grootste unievariabele. Het maakt het mogelijk dat verschillende soorten objecten dezelfde locatie delen.
Syntaxis van het declareren van structuur
struct [name of the structure]
{
type member1;
type member2;
type member3;
};
Structuur wordt gedeclareerd met behulp van het trefwoord โstructโ en de naam van de structuur. Nummer 1, nummer 2, nummer 3 zijn individuele leden van de structuur. Het hoofdgedeelte wordt afgesloten met een puntkomma (;).
Voorbeeld van structuur in C-programmering
#include <stdio.h>
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;
}
In het bovenstaande programma wordt een structuur met de naam student gemaakt. Deze structuur heeft drie gegevensleden: 1) naam (tekenreeks), 2) roll_no (geheel getal) en 3) markeringen (zwevend).
Hierna wordt een structuurvariabele sdt aangemaakt om leerlinginformatie op te slaan en op het computerscherm weer te geven.
Output:
Voer de volgende gegevens in:
Voer de naam van de student in: James
Vul het studentenlijstnummer in: 21
Studentcijfers invoeren: 67
De gegevens die u heeft ingevuld zijn:
Naam leerling: Jan
Studentenlijstnummer: 21
Studentencijfers: 67.0
Syntaxis van het verklaren van de Unie
union [name of union]
{
type member1;
type member2;
type member3;
};
Union wordt gedeclareerd met behulp van het trefwoord โunionโ en de naam van de union. Nummer 1, nummer 2, nummer 3 zijn individuele leden van de vakbond. Het hoofdgedeelte wordt afgesloten met een puntkomma (;).
Voorbeeld van Union in C-programmering
#include <stdio.h>
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;
}
Output:
1101109601
20.199892
a
In het bovenstaande programma kun je zien dat de waarden van x en y beschadigd raken. Alleen variabele ch geeft het verwachte resultaat weer. Dit komt omdat bij unie de geheugenlocatie wordt gedeeld door alle lidgegevenstypen.
Daarom zal het enige gegevenslid waarvan de waarde momenteel is opgeslagen, geheugenruimte in beslag nemen. De waarde van de variabele ch werd uiteindelijk opgeslagen, dus de waarde van de rest van de variabelen Is verloren.
Structuur versus. Unie

Hier is het belangrijke verschil tussen structuur en unie:
| Structuur | Unie |
|---|---|
| U kunt een struct-trefwoord gebruiken om een โโstructuur te definiรซren. | U kunt een samenvoegingssleutelwoord gebruiken om een โโsamenvoeging te definiรซren. |
| Elk lid binnen de structuur krijgt een unieke geheugenlocatie toegewezen. | Bij unie wordt een geheugenlocatie gedeeld door alle gegevensleden. |
| Het wijzigen van de waarde van รฉรฉn gegevenslid heeft geen invloed op andere gegevensleden in de structuur. | Als u de waarde van รฉรฉn gegevenslid wijzigt, verandert de waarde van andere gegevensleden in de unie. |
| Hiermee kunt u meerdere leden tegelijk initialiseren. | Hiermee kunt u alleen het eerste lid van de vakbond initialiseren. |
| De totale grootte van de structuur is de som van de grootte van elk gegevenslid. | De totale omvang van de unie is de omvang van het grootste gegevenslid. |
| Het wordt voornamelijk gebruikt voor het opslaan van verschillende gegevenstypen. | Het wordt voornamelijk gebruikt voor het opslaan van een van de vele gegevenstypen die beschikbaar zijn. |
| Het neemt ruimte in beslag voor elk lid dat in innerlijke parameters is geschreven. | Het neemt ruimte in beslag voor een lid met de hoogste grootte, geschreven in interne parameters. |
| U kunt elk lid tegelijk ophalen. | Je hebt toegang tot รฉรฉn lid tegelijk in de vakbond. |
| Het ondersteunt flexibele array. | Het ondersteunt geen flexibele array. |
Voordelen van structuur
Hier zijn de voor- en nadelen van het gebruik van structuur:
- Structuren verzamelen meer dan รฉรฉn stuk gegevens over hetzelfde onderwerp op dezelfde plaats.
- Het is handig als u gegevens van vergelijkbare gegevenstypen en parameters wilt verzamelen, zoals voornaam, achternaam, enz.
- Het is heel gemakkelijk te onderhouden, omdat we het hele record kunnen vertegenwoordigen door รฉรฉn enkele naam te gebruiken.
- In de structuur kunnen we een volledige set records aan elke functie doorgeven met behulp van een enkele parameter.
- U kunt een matrixstructuur gebruiken om meer records met vergelijkbare typen op te slaan.
Voordelen van unie
Hier zijn de voor- en voordelen van het gebruik van Union:
- Het neemt minder geheugen in beslag in vergelijking met structuur.
- Wanneer u union gebruikt, is alleen de laatste variabele rechtstreeks toegankelijk.
- Union wordt gebruikt wanneer u dezelfde geheugenlocatie moet gebruiken voor twee of meer gegevensleden.
- Hiermee kunt u gegevens van slechts รฉรฉn gegevenslid bewaren.
- De toegewezen ruimte is gelijk aan de maximale grootte van het gegevenslid.
Nadelen van structuur
Hier zijn de nadelen/nadelen van het gebruik van structuur:
- Als de complexiteit van een IT-project de grenzen overschrijdt, wordt het moeilijk om het te beheren.
- Een wijziging van รฉรฉn datastructuur in de code vereist wijzigingen op veel andere plaatsen. Daardoor worden die wijzigingen lastig. track.
- De structuur is langzamer omdat er opslagruimte voor alle gegevens nodig is.
- U kunt elk lid tegelijk ophalen in de structuur, terwijl u in de vakbond toegang heeft tot รฉรฉn lid tegelijk.
- Structuur neemt ruimte in beslag voor elk lid dat in innerlijke parameters is geschreven, terwijl vereniging ruimte in beslag neemt voor een lid met de hoogste grootte, geschreven in innerlijke parameters.
- Structuur ondersteunt flexibele array. Union ondersteunt geen flexibele array.
Nadelen van unie
Hier volgen de nadelen/nadelen van het gebruik van Union:
- Je kunt slechts รฉรฉn vakbondslid tegelijk gebruiken.
- Niet alle unievariabelen kunnen worden geรฏnitialiseerd of gebruikt met verschillende waarden tegelijk.
- Union wijst รฉรฉn gemeenschappelijke opslagruimte toe aan al haar leden.
BELANGRIJKSTE VERSCHILLEN:
- Aan elk lid binnen de structuur wordt een unieke geheugenlocatie toegewezen, terwijl in de unie een geheugenlocatie wordt gedeeld door alle gegevensleden.
- Het wijzigen van de waarde van รฉรฉn gegevenslid heeft geen invloed op andere gegevensleden in de structuur, terwijl het wijzigen van de waarde van รฉรฉn gegevenslid de waarde van andere gegevensleden in de vereniging zal veranderen.
- Structuur wordt voornamelijk gebruikt voor het opslaan van verschillende gegevenstypen, terwijl unie voornamelijk wordt gebruikt voor het opslaan van een van de vele gegevenstypen.
- In de structuur kunt u elk lid tegelijk ophalen, maar in de vakbond heeft u toegang tot รฉรฉn lid tegelijk.
- Structuur ondersteunt flexibele arrays, terwijl unie geen flexibele arrays ondersteunt.
Bekijk ook onze C-tutorial voor beginners: - Klik Hier
