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 betyg [10]; då är markeringar en array som kan lagra tio poäng och alla är heltal. Ibland krävs det att lagra dataelement av olika typer i samma minnesplats. Till exempel kan en anställd ha ett anställds-ID, namn, avdelning, ålder etc. De har olika datatyper. Därför är det nödvändigt att ha en metod att lagra olika dataelement som en enda enhet. Strukturer och fackföreningar i C används för att lagra dataelement av olika typer i samma minnesplats. En struktur och en fackförening är likartade men de skiljer sig huvudsakligen beroende på minnesallokering. Minnet som krävs för att lagra en strukturvariabel är summan av minnesstorleken för alla medlemmar. Minnet som krävs för att lagra en facklig variabel är det minne som krävs för det största elementet i facket. Det är nyckelskillnaden mellan struktur och union i C. I denna artikel diskuteras skillnaden mellan struktur och union i C.
1. Översikt och nyckelskillnad
2. Vad är struktur i C
3. Vad är Union i C
4. Likheter mellan struktur och union i C
5. Sida vid sidajämförelse - Struktur vs Union i C i tabellform
6. Sammanfattning
En struktur är en användardefinierad datatyp i C. Det hjälper till att kombinera dataposter av olika slag. En struktur kan representera poster. En elev kan ha student_id, studentnamn etc. Istället för att lagra varje variabel separat kan alla dessa olika dataobjekt vara kompakta i en enda enhet med hjälp av en struktur. Det definieras med hjälp av sökordet 'struct'. I en struktur, alla dess medlemmar kan 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å sätt att komma åt strukturens medlemmar. Det vill säga genom att använda medlemsoperatören (.) Och strukturpekareoperatören (->). Medlemmarna kan nås med struktur_variable_name. Medlemsnamn. Om programmeraren vill få tillgång till namnet på studenten 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 studenten en struktur. Den innehåller student_id och studentnamn. Två variabler av strukturtyp förklaras i huvudprogrammet. De kallas student1 och student2. Student1s id är tilldelat med värde 1 med medlemsoperatören som student1.student_id = 1. Namnet "Ann" är en sträng. Därför kopieras den till studentnamnmedlemmen med strängkopieringsfunktionsstrcpy. ID och namn tilldelas student2 på ett liknande sätt. Slutligen skrivs dessa värden ut med användande av medlemmar.
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.
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 fackförening. Det definieras med hjälp av sökordet "union". Följande skapar en härledd datafackbok.
unionBook
karaktärsnamn [20];
dubbel pris;
;
För ovanstående fackförening kan variabler deklareras enligt följande.
fackliga bokbok1, book2;
Det finns två sätt att få tillgång till medlemmarna i facket. Det vill säga genom att använda medlemsoperatören (.) Och strukturpekareoperatören (->). Medlemmarna kan nås med hjälp av union_variable_name. Medlemsnamn. Om programmeraren vill komma åt bokens namn1 kan han skriva uttalandet som printf (book1.name);
Se nedan med ett fackförbund.
Figur 02: C-program med union
Enligt ovanstående program är boken en union. Book1 är en variabel av typunionen. Namnet och priset är tilldelade värden. I fackföreningen kan endast en av medlemmarna 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 ordentligt.
Figur 03: Modifierat C-program med fackförening
Enligt ovanstående program är bok en union. Book1 och book2 är fackliga typvariabler. Först tilldelas värdet för bok 1-namnet och det skrivs ut. Då är värdet för bok2-namn tilldelat och det skrivs ut. Alla medlemmar skrivs ut korrekt eftersom en medlem används i taget. Minnet som krävs för att lagra en fack är det minne som krävs för fackets största element. I ovanstående program är namnsvariabeln 20 byte. Det är större än priset. Så är minnesallokationen för facket 20 byte.
Struktur vs Union i C | |
Struktur är en användardefinierad datatyp i C-språk som möjliggör kombinering av data av olika typer tillsammans. | Union är en användardefinierad datatyp i 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är som helst nås. | I en fackförbund kan endast en av medlemmarna åtkomst åt gången och alla andra medlemmar kommer att innehålla skräpvärden. |
Minnesallokering | |
Minnet som krävs för att lagra en strukturvariabel är summan av minnesstorleken för alla medlemmar. | Minnet som krävs för att lagra en facklig variabel är det minne som krävs för det största elementet i facket. |
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". |
En array används för att lagra dataelementen av samma typ. Ibland är det nödvändigt att lagra dataelement av olika typer i samma minnesplats. C programmeringsspråk ger struktur och fackförening för att uppnå denna uppgift. Båda är användardefinierade datatyper. Minnet som krävs för att lagra en strukturvariabel är summan av minnesstorleken för alla medlemmar. Minnet som krävs för att lagra en facklig variabel är det minne som krävs för det största elementet i facket. Detta är skillnaden mellan struktur och union i C.
1.Point, handledning. "Strukturer i C.", Tutorials Point, 15 aug 2017. Tillgänglig här
2.Point, handledning. "Fackförbund i C." , Tutorials Point, 15 aug 2017. Tillgänglig här