Verschil tussen structuur en Unie Verschil tussen

Anonim

Beide structuur en unie zijn door de gebruiker gedefinieerde gegevenstypen in C-taal en zijn conceptueel hetzelfde, maar ze zijn nog steeds verschillend in sommige opzichten, zoals de manier waarop geheugen wordt toegewezen aan hun leden. Ze worden op dezelfde manier verklaard, maar ze functioneren anders. Hiermee kan de gebruiker verschillende gegevenstypen combineren onder één naam. Terwijl een afzonderlijke geheugenlocatie wordt gebruikt voor elk lid bij het declareren van structuurvariabelen, delen de verschillende leden van een vakbindingsvariabele dezelfde geheugenlocatie. Laten we het verschil bestuderen tussen structuur en eenheid is detail.

Wat is structuur?

Een structuur is gewoon een ander door de gebruiker gedefinieerd gegevenstype in C waarmee de gebruiker gegevenstypes van verschillende soorten tot een enkel type in een geheugenblok kan combineren. Een structuur kan zowel eenvoudige als complexe gegevenstypen bevatten die aan elkaar gerelateerd zijn en die anders niet zinvol zijn. Elk lid in een structuur krijgt zijn eigen geheugenlocatie, zodat het op elk moment kan worden geopend en opgehaald.

Een structuur wordt gebruikt wanneer veel gegevens moeten worden gegroepeerd, zoals een map waarin informatie over veel leden in een boek of een adresboek wordt opgeslagen met alle informatie over één contact - naam, adres, contact nummer, enzovoort. Het adres van elk lid is in stijgende volgorde, wat betekent dat het geheugen van elk lid met verschillende offsetwaarden begint. Het wijzigen van de waarde van één lid heeft geen effect op andere leden.

Een 'struct'-sleutelwoord wordt gebruikt om een ​​structuur van verschillende gegevenstypen onder één naam te definiëren. Als u bijvoorbeeld een werknemersdatabase wilt maken, moet u de gegevens over de naam, leeftijd, telefoon en salaris van werknemers opslaan onder een enkele entiteit. Dit wordt gedaan met het sleutelwoord 'struct', dat vervolgens de compiler vertelt dat een structuur is gedeclareerd.

struct employee {

string name;

tekenreeksleeftijd;

telefoon met snaren;

snaarsalaris;

} emp1, emp2;

Hier is 'werknemer' de naam van de structuur en twee variabelen 'emp1' en 'emp2' zijn gemaakt van het type 'werknemer'. De sluitschoren moeten worden gevolgd door een puntkomma (;).

Leden van een structuur kunnen worden benaderd door twee typen operators:

  1. Member-operator
  2. Structure pointer-operator

What is Union?

Het is een speciaal gegevenstype dat in C wordt gebruikt en waarmee de gebruiker gegevenstypes van verschillende soorten op dezelfde geheugenlocatie kan opslaan. Een vakbond lijkt veel op een structuur en kan worden gedefinieerd door het trefwoord 'struct' te vervangen door het sleutelwoord 'union'. De leden leggen de herinnering aan elkaar in een vak verband en het is groot genoeg om in alle leden te passen.

Wanneer een variabele is gekoppeld aan union, wijst de compiler het geheugen toe aan de hand van de grootte van het grootste geheugen, zodat de grootte van een union gelijk is aan de grootte van het grootste gegevenselement.Een unie kan met veel leden worden gedefinieerd, maar slechts één lid bevat de waarde op elk willekeurig tijdstip.

Het adres is hetzelfde voor alle leden van een vakbond, wat betekent dat elk lid begint met dezelfde offsetwaarde. En het wijzigen van de waarde van één lid heeft invloed op waarden van andere leden. Een unie kan worden gebruikt wanneer u iets wilt opslaan dat een van de verschillende gegevenstypen is.

vakbondsmedewerker {

char name [32];

int age;

floatsalaris;

};

Hier definieert het sleutelwoord 'union' de unie die vrij veel lijkt op de verklaring van de structuur. De variabele kan ofwel een stringwaarde opslaan die 'naam van de werknemer' is, een integer-waarde die de 'leeftijd van de werknemer' is, of een float die het 'salaris van de werknemer' vertegenwoordigt.

Verschil tussen structuur en Unie

1. Zoekwoord

Het sleutelwoord 'struct' wordt gebruikt om een ​​structuur te definiëren, terwijl het sleutelwoord 'union' wordt gebruikt om een ​​unie te definiëren.

2. Geheugentoewijzing

Er is aparte geheugenruimte toegewezen voor de leden binnen een structuur en leden hebben verschillende adressen die geen geheugen delen. Een vakbond daarentegen deelt dezelfde geheugenruimte voor alle leden, zodat de gedeelde geheugenlocatie wordt toegewezen.

3. Toegang voor leden

Een vakbond slaat één waarde tegelijk op voor alle leden, waardoor slechts één lid tegelijk toegankelijk is. Hoewel meerdere waarden in een structuur kunnen worden opgeslagen, kan elke lidwaarde op elk moment worden geopend en opgehaald.

4. Grootte

De grootte van een structuur is gelijk aan de som van de grootte van alle leden of meer, terwijl de grootte van een eenheid gelijk is aan de grootte van het lid met de grootste afmeting.

5. Initialisatie

In een structuur kunnen meerdere leden tegelijkertijd worden geïnitialiseerd, terwijl in een unie alleen het eerste lid kan worden geïnitialiseerd met de waarde van zijn type.

5. Waarde

Een structuur kan verschillende waarden van alle leden opslaan en wijziging in de waarde van één lid heeft geen effect op de waarden van andere leden. Terwijl een vakbond dezelfde waarde voor al zijn leden opslaat en de waarde van een lid verandert de waarde van een ander.

Structuur vs. Unie

Structuur Unie
Structuurzoekwoord wordt gebruikt om een ​​structuur te definiëren. Union-sleutelwoord wordt gebruikt om een ​​unie te definiëren.
Leden delen geen geheugen in een structuur. Leden delen de geheugenruimte in een vakbond.
Elk lid kan op elk gewenst moment in een structuur worden opgehaald. Er is slechts één lid tegelijk toegankelijk in een vakbond.
Verschillende leden van een structuur kunnen tegelijkertijd worden geïnitialiseerd. Alleen het eerste lid kan worden geïnitialiseerd.
Grootte van de structuur is gelijk aan de som van de grootte van elk lid. De grootte van de vakbond is gelijk aan de grootte van het grootste lid.
De waarde van één lid wijzigen heeft geen invloed op de waarde van een ander lid. Verandering in waarde van één lid heeft invloed op andere lidwaarden.
Slaat verschillende waarden op voor alle leden. Slaat dezelfde waarde op voor alle leden.

Samenvatting

  • Zowel de structuur als de unie zijn door de gebruiker gedefinieerde gegevenstypen in C die functioneel en conceptueel hetzelfde zijn, maar op sommige manieren behoorlijk verschillen.
  • Beide bevatten variabelen van verschillende gegevenstypen, maar ze gebruiken dezelfde syntaxis voor het declareren van variabelen en voor toegang tot leden. Hoewel een structuur wordt gedefinieerd door het sleutelwoord 'struct', wordt een unie gedefinieerd door het sleutelwoord 'union'.
  • Elk lid krijgt een afzonderlijke geheugenlocatie in een structuur, terwijl in een vakbond de totale geheugenruimte gelijk is aan het lid met de grootste grootte. Alle leden delen dezelfde geheugenruimte in een vakbond.
  • Elk lid in een willekeurige volgorde kan worden benaderd in een structuur, terwijl in een vakbond alleen die variabele toegankelijk is waarvan de waarde recent is opgeslagen.