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

Structuur versus. Unie
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.
  • Verandering van één datastructuur in een code maakt veranderingen op veel andere plaatsen noodzakelijk. Daarom worden de veranderingen moeilijk te volgen.
  • 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