Nyckelskillnad - Struktur mot union i C
En matris är en strukturerad data 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-märken [10]; då är markeringar en matris som kan lagra tio markeringar och alla är heltal. Ibland krävs det lagra dataelement av olika typer på samma minnesplats. Till exempel kan en anställd ha ett anställd ID, namn, avdelning, ålder etc. De har 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 föreningar i C används för att lagra dataelement av olika typer på samma minnesplats. En struktur och en sammanslutning liknar men de skiljer sig huvudsakligen på grund av minnesallokering. Det minne som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. Det minne som krävs för att lagra en unionvariabel är det minne som krävs för det största elementet i unionen. Det är nyckelskillnaden mellan struktur och union i C. Denna artikel diskuterar skillnaden mellan struktur och union i C.
INNEHÅLL
1. Översikt och nyckeldifferens
2. Vad är struktur i C
3. Vad är union i C
4. Likheter mellan struktur och union i C
5. Jämförelse sida vid sida - Struktur vs Union i C i tabellform
6. Sammanfattning
Vad är struktur i C?
En struktur är en användardefinierad datatyp i C. Det hjälper till att kombinera dataobjekt av olika typer. En struktur kan representera poster. En elev kan ha student_id, studentnamn etc. I stället för att lagra varje variabel separat kan alla dessa olika dataposter kompakteras till en enda enhet med hjälp av en struktur. Det definieras med hjälp av nyckelordet 'struct'. I en struktur kan alla medlemmar nås när som helst. Följande skapar en härledd datatyp struct Student.
struct Student {
intstudent_id;
char student_name [20];
};
För ovanstående struktur kan variabler deklareras enligt följande.
struct Student student1, student2, student3;
Det finns två metoder för att komma åt medlemmarna i strukturen. Det är genom att använda medlemsoperatören (.) Och strukturpekaren (->). Medlemmarna kan nås med hjälp av structure_variable_name. Medlemsnamn. Om programmeraren vill komma åt namnet på student 2 kan han skriva uttalandet som printf (student2.student_namename);
Se nedanstående program med en struktur.
Figur 01: C-program med strukturer
Enligt ovanstående program är student en struktur. Den innehåller student_id och studentnamn. Två variabler av strukturtyp deklareras i huvudprogrammet. De kallas student1 och student2. Student1: s id tilldelas värdet 1 med medlemsoperatören som student1.student_id = 1. Namnet “Ann” är en sträng. Därför kopieras den till studentnamnsmedlemmen med hjälp av strängkopiefunktionen strcpy. Id och namn tilldelas student2 på liknande sätt. Slutligen skrivs dessa värden ut med medlemsoperatören.
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 studentnamn innehåller 20 byte (en byte vardera för ett tecken). Totalt 24 byte är summan av minnesstorlek som krävs av strukturen.
Vad är Union in 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. I stä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. Det definieras med hjälp av nyckelordet 'union'. Följande skapar en härledd dataunion-bok.
unionBook {
char namn [20];
dubbelpris;
};
För ovanstående union kan variabler deklareras enligt följande.
union Bokbok1, bok2;
Det finns två metoder för att komma åt medlemmarna i facket. Det är genom att använda medlemsoperatören (.) Och strukturpekaren (->). Medlemmarna kan nås med union_variable_name. Medlemsnamn. Om programmeraren vill komma åt bokens 1 namn kan han skriva uttalandet som printf (book1.name);
Se nedanstående program med en fackförening.
Figur 02: C-program med fackförening
Enligt ovanstående program är boken en fackförening. Book1 är en variabel av typförening. Namn och pris tilldelas värden. I unionen 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 ordentligt men prisvärdet skrivs ut ordentligt.
Figur 03: Modifierat C-program med union
Enligt programmet ovan är Book en fackförening. Book1 och book2 är variabler av unionstyp. Först tilldelas värdet för book1-namn och det skrivs ut. Därefter tilldelas värdet för book2-namn och det skrivs ut. Alla medlemmar skriver ut korrekt eftersom en medlem används åt gången. Det minne som krävs för att lagra en union är det minne som krävs för det största elementet i unionen. I ovanstående program är namnvariabeln 20 byte. Det är större än priset. Så minnesallokeringen för unionen är 20 byte.
Vad är likheterna mellan struktur och union i C?
- Både Structure och Union i C är användardefinierade datatyper.
- Både Structure och Union in C kan användas för att lagra olika datatyper på samma minnesplats.
Vad är skillnaden mellan struktur och union i C?
Skilja artikeln mitt före bordet
Struktur mot union i C |
|
Structure är en användardefinierad datatyp på 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 en fackförening kan endast en av dess medlemmar nås åt gången och alla andra medlemmar kommer att innehålla avfallsvärden. |
Minnesallokering | |
Det minne som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. | Det minne som krävs för att lagra en unionsvariabel är det minne som krävs för det största elementet i unionen. |
Nyckelord | |
Nyckelordet som används för att definiera en struktur är 'struct'. | Nyckelordet som används för att definiera en union är "union". |
Sammanfattning - Struktur mot union i C
En matris används för att lagra dataelement av samma typ. Ibland är det nödvändigt att lagra dataelement av olika slag på samma minnesplats. C programmeringsspråk ger struktur och union för att utföra denna uppgift. Båda är användardefinierade datatyper. Det minne som krävs för att lagra en strukturvariabel är summeringen av minnesstorleken för alla medlemmar. Det minne som krävs för att lagra en unionsvariabel är det minne som krävs för det största elementet i unionen. Detta är skillnaden mellan struktur och union i C.