Key Difference – Structure vs Union in C
En array är en datastruktur som stöds av C-språk. En array kan användas för att lagra dataelement av samma typ. Om det finns ett uttalande som int markerar [10]; då är märken en array som kan lagra tio märken och alla är heltal. Ibland krävs det att lagra dataelement av olika typer på samma minnesplats. En anställd kan till exempel ha ett anställd-ID, namn, avdelning, ålder etc. De är av olika datatyper. Därför är det nödvändigt att ha en metod för att lagra olika dataelement som en enda enhet. Strukturer och fackföreningar i C används för att lagra dataelement av olika typer på samma minnesplats. En struktur och en fackförening liknar varandra men de skiljer sig huvudsakligen åt på grund av minnesallokering. Minnet som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. Minnet som krävs för att lagra en unionsvariabel är det minne som krävs för det största elementet i föreningen. Det är den viktigaste skillnaden mellan struktur och union i C. Den här artikeln diskuterar skillnaden mellan struktur och union i C.
Vad är struktur i C?
En struktur är en användardefinierad datatyp i C. Den hjälper till att kombinera dataobjekt av olika typer. En struktur kan representera poster. En student kan ha student_id, student_name etc. Istället för att lagra varje variabel separat, kan alla dessa olika dataobjekt komprimeras till en enda enhet med hjälp av en struktur. Det definieras med nyckelordet "struct". I en struktur kan alla dess medlemmar nås när som helst. Följande skapar en härledd datatypstruktur Student.
struct Student {
intstudent_id;
char student_name[20];
};
För strukturen ovan kan variabler deklareras enligt följande.
struct Student student1, student2, student3;
Det finns två sätt att komma åt medlemmarna i strukturen. Det är genom att använda medlemsoperatorn (.) och strukturpekare (->). Medlemmarna kan nås med struktur_variabel_namn. Medlemsnamn. Om programmeraren vill komma åt namnet på elev 2, kan han skriva påståendet som printf(student2.student_name);
Se programmet nedan med en struktur.
Figur 01: C-program med strukturer
Enligt ovanstående program är Student en struktur. Den innehåller student_id och student_name. Två variabler av strukturtyp deklareras i huvudprogrammet. De kallas student1 och student2. Student1s id tilldelas värde 1 med medlemsoperatorn som student1.student_id=1. Namnet "Ann" är en sträng. Därför kopieras den till medlemmen student_name med hjälp av strängkopieringsfunktionen strcpy. ID och namn tilldelas student2 på liknande sätt. Slutligen skrivs dessa värden ut med medlemsoperatorn.
Mängden minne som krävs för att lagra en strukturvariabel är summan av minnesstorleken för alla medlemmar. Student_id innehåller 4 byte och student_name innehåller 20 byte (en byte vardera för ett tecken). De totala 24 byten är summan av minnesstorleken som krävs av strukturen.
Vad är Union i C?
En union är en användardefinierad datatyp i C. Det hjälper till att lagra olika datatyper på samma minnesplats. En bok kan ha egenskaper som boknamn, pris etc. Istället för att skapa variabler för var och en av dem kan en union användas för att komprimera alla olika datatyper till en enhet med hjälp av en union. Den definieras med nyckelordet "union". Följande skapar en härledd dataunionsbok.
unionBook{
char name[20];
dubbelt pris;
};
För ovanstående förening kan variabler deklareras enligt följande.
union Bok bok1, bok2;
Det finns två sätt att komma åt förbundets medlemmar. Det är genom att använda medlemsoperatorn (.) och strukturpekare (->). Medlemmarna kan nås med union_variable_name. Medlemsnamn. Om programmeraren vill komma åt namnet på boken1, kan han skriva uttalandet som printf(bok1.namn);
Referera till programmet nedan med en fackförening.
Figur 02: C-program med union
Enligt ovanstående program är Boken ett fackförbund. Book1 är en variabel av typen union. Namnet och priset är tilldelade värden. I fackföreningen kan endast en av dess medlemmar nås åt gången och alla andra medlemmar kommer att ha skräpvärden. Värdet på id skrivs inte ut korrekt men prisvärdet skrivs ut korrekt.
Figur 03: Modifierat C-program med fackförbund
Enligt ovanstående program är Book ett fackförbund. Bok1 och bok2 är variabler av unionstyp. Först tilldelas värdet för bok1-namnet och det skrivs ut. Sedan tilldelas värdet för bok2-namnet och det skrivs ut. Alla medlemmar skrivs ut korrekt eftersom en medlem används åt gången. Minnet som krävs för att lagra en förening är det minne som krävs för den största delen av föreningen. I programmet ovan är namnvariabeln 20 byte. Det är större än priset. Så minnesallokeringen för förbundet är 20 byte.
Vilka är likheterna mellan struktur och union i C?
- Både Structure och Union i C är användardefinierade datatyper.
- Både Structure och Union i C kan användas för att lagra olika datatyper på samma minnesplats.
Vad är skillnaden mellan struktur och union i C?
Structure vs Union i C |
|
Structure är en användardefinierad datatyp i C-språk som gör det möjligt att kombinera data av olika typer tillsammans. | Union är en användardefinierad datatyp på C-språk som gör det möjligt att kombinera data av olika typer tillsammans. |
Tillgänglighet | |
I en struktur kan alla dess medlemmar nås när som helst. | I ett förbund kan endast en av dess medlemmar nås åt gången och alla andra medlemmar kommer att innehålla skräpvärden. |
Memory Allocation | |
Minnet som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. | Minnet som krävs för att lagra en unionsvariabel är det minne som krävs för det största elementet i unionen. |
Sökord | |
Nyckelordet som används för att definiera en struktur är 'struct'. | Nyckelordet som används för att definiera en fackförening är "union". |
Sammanfattning – Structure vs Union i C
En array används för att lagra dataelement av samma typ. Ibland är det nödvändigt att lagra dataelement av olika typer på samma minnesplats. C programmeringsspråk ger struktur och union för att utföra denna uppgift. Båda är användardefinierade datatyper. Minnet som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. Minnet som krävs för att lagra en unionsvariabel är det minne som krävs för det största elementet i föreningen. Detta är skillnaden mellan struktur och fackförening i C.