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.
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:
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".
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.
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. |