Skillnad mellan struktur och union Skillnaden mellan

Anonim

Både struktur och fackförening är användardefinierade datatyper i C Language och är konceptuellt desamma, men de är fortfarande olika på något sätt som hur minnet tilldelas sina medlemmar. De deklareras på samma sätt men de fungerar annorlunda. De tillåter användaren att kombinera olika datatyper under ett enda namn. Medan separat minnesplats används för varje medlem när deklarerar strukturvariabler, delar de olika medlemmarna av en fackvariabel samma minnesplats. Låt oss studera skillnaden mellan struktur och union är detalj.

Vad är struktur?

En struktur är bara en annan användardefinierad datatyp i C som tillåter användaren att kombinera datatyper av olika slag till en enda typ i ett block av minne. En struktur kan innehålla både enkla och komplexa datatyper som är relaterade till varandra, vilket annars inte kommer att ge mening. Varje medlem i en struktur får sin egen minnesplats så att den kan nås och hämtas när som helst.

En struktur används när mycket data behöver gruppera som en katalog som lagrar information om många medlemmar i en bok eller en adressbok som lagrar all information om en enda kontakt - namn, adress, kontaktnummer, och så vidare. Adressen till varje medlem kommer att vara i stigande ordning vilket innebär att minnet för varje medlem kommer att börja vid olika offsetvärden. Att ändra värdet på en medlem kommer inte att ha någon effekt på andra medlemmar.

Ett 'struct'-nyckelord används för att definiera en struktur av olika datatyper under ett enda namn. Om du till exempel vill skapa en anställddatabas måste du lagra medarbetarens namn, ålder, telefon och löneuppgifter under en enskild enhet. Detta görs med sökordet 'struct', som sedan berättar kompilatorn om att en struktur har blivit deklarerad.

struct anställd {

strängnamn;

strängålder;

strängtelefon;

stränglön;

} emp1, emp2;

Här är "anställd" namnet på strukturen och två variabler "emp1" och "emp2" är skapade av typen "anställd". Stängningsstagen måste följas av en semikolon (;).

Medlemmar av en struktur kan nås av två typer av operatörer:

  1. Medlemsoperatör
  2. Strukturpekareoperatör

Vad är Union?

Det är en speciell datatyp som används i C som låter användaren lagra datatyper av olika slag på samma minnesplats. En union är ganska lik en struktur och den kan definieras genom att ersätta sökordet 'struct' med nyckelordet 'union'. Medlemmarna överlagrar minnet om varandra i en union och det är tillräckligt stort för att passa alla medlemmar.

När en variabel är associerad med fackföreningen allokerar kompilatorn minnet genom att beakta storleken på det största minnet, så storleken på en facklig organisation är lika med storleken på den största dataleden.En union kan definieras med många medlemmar, men endast en medlem innehåller värdet vid vilken tid som helst.

Adressen är samma för alla medlemmar i en fackförening som betyder att varje medlem börjar med samma förskjutningsvärde. Att ändra värdet på en medlem kommer att påverka värdena för andra medlemmar. En union kan användas när du vill lagra något som är en av flera datatyper.

facklig anställd {

karaktärsnamn [32];

int ålder;

flyktlön;

};

Här definierar nyckelordet "union" unionen som är ganska lik strukturdeklarationen. Variabeln kan antingen lagra ett strängvärde som är namnet på den anställde, ett heltal som är "arbetstagarens ålder" eller en float som representerar "lönen för arbetstagaren".

Skillnad mellan struktur och union

1. Nyckelord

Nyckelordet 'struct' används för att definiera en struktur medan "union" -ordet används för att definiera en union.

2. Memory Allocation

Separat minnesutrymme är tilldelat för medlemmarna i en struktur och medlemmarna har olika adresser som inte delar minnet. En union, å andra sidan, delar samma minnesutrymme för alla dess medlemmar så delad minnesplats tilldelas.

3. Medlemstillträde

En fackförening lagrar ett enda värde i taget för alla medlemmar som gör tillgänglighet till endast en medlem i taget. Medan flera värden kan lagras i en struktur så kan varje medlemsvärde nås och hämtas när som helst.

4. Storlek

Storleken på en struktur är lika med summan av storleken på alla medlemmar eller mer, medan storleken på en union är lika med storleken på den största storleken.

5. Initialisering

I en struktur kan flera medlemmar initieras samtidigt, medan i en union endast den första delen kan initieras med värdet av dess typ.

5. Värde

En struktur kan lagra olika värden för alla medlemmar och ändring av värdet av en medlem kommer inte att ha någon effekt på värdena för andra medlemmar. Medan en fackförening lagrar samma värde för alla medlemmar och värdeförändring av en medlem kommer att påverka värdet av andra.

Struktur vs. Union

Struktur Union
Strukturordet används för att definiera en struktur. Unionens nyckelord används för att definiera en union.
Medlemmar delar inte minne i en struktur. Medlemmar delar minnesutrymmet i en fackförening.
Varje medlem kan hämtas när som helst i en struktur. Endast en medlem kan nås på en gång i en fackförening.
Flera medlemmar av en struktur kan initialiseras på en gång. Endast den första medlemmen kan initialiseras.
Strukturen är lika med summan av storleken på varje medlem. Unionens storlek motsvarar storleken på den största medlemmen.
Ändra värdet på en medlem påverkar inte värdet på en annan. Ändring av värdet på en medlem påverkar andra medlemsvärden.
Lagrar olika värden för alla medlemmar. Lagrar samma värde för alla medlemmar.

Sammanfattning

  • Både strukturen och facket är användardefinierade datatyper i C som är funktionellt och konceptuellt lika men ändå ganska annorlunda på vissa sätt.
  • Båda innehåller variabler av olika datatyper men de använder samma syntax för att deklarera variabler och få tillgång till medlemmar. Medan en struktur definieras av strukturstrukturen definieras en fackförening av nyckelordet "union".
  • Varje medlem får separat minnesplats i en struktur, medan den totala minnesutrymmet i en union motsvarar den största storleken. Alla medlemmar delar samma minnesutrymme i en fackförening.
  • Varje medlem i vilken sekvens som helst kan nås i en struktur, medan i en union endast den variabeln kan nås vars värde nyligen lagrats.