Skillnad mellan struktur och union

Både strukturen och facket ä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 i minnet. 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 osv. 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åldern;

sträng telefon;

stränglön;

emp1, emp2;

Här är "anställd" namnet på strukturen och två variabler emp1 och emp2 skapas av typen anställd. Stängningsfäste 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 Unionen??

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 fack ä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 innebär 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;

float lön;

;

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

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 tilldelas medlemmarna inom 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. Medlemsåtkomst

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 medlem.

5. Initialisering

I en struktur kan flera medlemmar initieras på en gång, medan i en union endast den första medlemmen kan initieras med värdet av dess typ.

5. Värde

En struktur kan lagra olika värden för alla medlemmar och ändring i 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

Strukturera 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 initieras på en gång. Endast den första medlemmen kan initialiseras.
Strukturens storlek är lika med summan av storleken på varje medlem. Fackets storlek motsvarar storleken på den största medlemmen.
Ändra värdet på en medlem påverkar inte värdet av en annan. Värdeändring av 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 olika 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 'struct'-sökordet definieras en fackförening av nyckelordet' union '.
  • Varje medlem får separat minnesplats i en struktur, medan det i en fackförening motsvarar det totala minnesutrymmet med 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 fackförening endast den variabeln kan nås vars värde nyligen lagrats.