Zowel de structuur als de unie zijn door de gebruiker gedefinieerde gegevenstypen in C-taal en zijn conceptueel hetzelfde, maar ze verschillen nog steeds op een bepaalde manier, zoals de manier waarop het 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. Hoewel 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.
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 directory waarin informatie over veel leden in een boek of een adresboek wordt opgeslagen waarin alle informatie over één contactpersoon wordt opgeslagen: naam, adres, contactnummer, 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 naam;
string leeftijd;
string telefoon;
string salaris;
emp1, emp2;
Hier is 'werknemer' de naam van de structuur en twee variabelen 'emp1' en 'emp2' zijn gemaakt van het type 'werknemer'. De sluitende accolades moeten worden gevolgd door een puntkomma (;).
Leden van een structuur kunnen worden benaderd door twee soorten operatoren:
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 unie 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 als u iets wilt opslaan dat een van de verschillende gegevenstypen is.
union employee
char name [32];
int leeftijd;
floatsalaris;
;
Hier definieert het sleutelwoord 'vakbond' de vakbond die vrij veel lijkt op de verklaring van de structuur. De variabele kan ofwel een stringwaarde opslaan die 'naam van de werknemer' is, een integerwaarde die de 'leeftijd van de werknemer' is, of een float die het 'salaris van de werknemer' vertegenwoordigt.
1. Sleutelwoord
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 enkele 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 unie gelijk is aan de grootte van het lid met de grootste grootte.
5. Initialisatie
In een structuur kunnen meerdere leden tegelijk worden geïnitialiseerd, terwijl in een unie alleen het eerste lid kan worden geïnitialiseerd met de waarde van het 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 | 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. |
De 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. |
Het wijzigen van de waarde van één lid heeft geen invloed op de waarde van een ander lid. | Verandering in de waarde van één lid heeft invloed op andere lidwaarden. |
Slaat verschillende waarden op voor alle leden. | Slaat dezelfde waarde op voor alle leden. |