Skillnaden mellan struktur och union i C
Vad är struktur?
Structure är en användardefinierad datatyp i programmeringsspråket C som kombinerar logiskt relaterade dataobjekt av olika datatyper tillsammans.
Alla strukturelementen lagras på sammanhängande minnesplatser. Strukturtypvariabel kan lagra mer än en datapost av olika datatyper under ett namn.
Vad är Union
Union är en användardefinierad datatyp, precis som en struktur. Union kombinerar föremål av olika typer och storlekar tillsammans. Fackföreningsvariabeln allokerar minnesutrymmet lika med utrymmet för att hålla den största variabeln i föreningen. Det tillåter olika typer av objekt att dela samma plats.
Syntax för deklarerande struktur
struct [name of the structure] { type member1; type member2; type member3; };
Struktur deklareras med nyckelordet "struct" och namnet på strukturen. Nummer 1, nummer 2, nummer 3 är enskilda medlemmar av strukturen. Kroppsdelen avslutas med semikolon (;).
Exempel på struktur i C-programmering
#include <stdio.h> struct student { char name[60]; int roll_no; float marks; } sdt; int main() { printf("Enter the following information:\n"); printf("Enter student name: "); fgets(sdt.name, sizeof(sdt.name), stdin); printf("Enter student roll number: "); scanf("%d", & sdt. roll_no); printf("Enter students marks: "); scanf("%f", & sdt.marks); printf("The information you have entered is: \n"); printf("Student name: "); printf("%s", sdt.name); printf("Student roll number: %d\n", sdt. roll_no); printf("Student marks: %.1f\n", sdt.marks); return 0; }
I programmet ovan skapas en struktur som kallas student. Denna struktur har tre datamedlemmar: 1) namn (sträng), 2) roll_no (heltal) och 3) märken (flytande).
Efter detta skapas en strukturvariabel sdt för att lagra elevinformation och visa den på datorskärmen.
Produktion:
Ange följande information:
Ange elevens namn: James
Ange elevrullenummer: 21
Ange studentbetyg: 67
Informationen du har angett är:
Elevens namn: John
Studentrullenummer: 21
Studentbetyg: 67.0
Syntax för att deklarera union
union [name of union] { type member1; type member2; type member3; };
Union deklareras med hjälp av nyckelordet "union" och fackets namn. Nummer 1, nummer 2, nummer 3 är enskilda medlemmar i facket. Kroppsdelen avslutas med semikolon (;).
Exempel på Union i C-programmering
#include <stdio.h> union item { int x; float y; char ch; }; int main( ) { union item it; it.x = 12; it.y = 20.2; it.ch = 'a'; printf("%d\n", it.x); printf("%f\n", it.y); printf("%c\n", it.ch); return 0; }
Produktion:
1101109601
20.199892
a
I programmet ovan kan du se att värdena för x och y blir skadade. Endast variabel ch skriver ut det förväntade resultatet. Det beror på att minnesplatsen delas mellan alla medlemsdatatyper.
Därför kommer den enda datamedlem vars värde för närvarande är lagrat att uppta minnesutrymme. Värdet på variabeln ch lagrades till sist, så värdet på resten av variabler Är försvunnen.
Struktur vs. Union
Här är den viktiga skillnaden mellan struktur och fackförening:
Structure | Unionen |
---|---|
Du kan använda ett struct nyckelord för att definiera en struktur. | Du kan använda ett fackligt nyckelord för att definiera ett fackförbund. |
Varje medlem inom strukturen tilldelas en unik minnesplats. | I förening delas en minnesplats av alla datamedlemmar. |
Att ändra värdet på en datamedlem påverkar inte andra datamedlemmar i strukturen. | Om du ändrar värdet på en datamedlem ändras värdet på andra datamedlemmar i unionen. |
Det gör att du kan initiera flera medlemmar samtidigt. | Det gör att du bara kan initiera den första medlemmen i fackföreningen. |
Den totala storleken på strukturen är summan av storleken på varje datamedlem. | Fackets totala storlek är storleken på den största datamedlemmen. |
Den används främst för att lagra olika datatyper. | Den används främst för att lagra en av de många datatyper som finns tillgängliga. |
Den tar plats för varje medlem skriven i inre parametrar. | Den tar plats för en medlem som har den högsta storleken skriven i inre parametrar. |
Du kan hämta vilken medlem som helst åt gången. | Du kan komma åt en medlem i taget i förbundet. |
Den stöder flexibel array. | Den stöder inte en flexibel array. |
Fördelar med struktur
Här är fördelar/fördelar med att använda struktur:
- Strukturer samlar mer än en del av data om samma ämne på samma plats.
- Det är användbart när du vill samla in data för liknande datatyper och parametrar som förnamn, efternamn, etc.
- Det är mycket lätt att underhålla eftersom vi kan representera hela posten genom att använda ett enda namn.
- I strukturen kan vi skicka en komplett uppsättning poster till vilken funktion som helst med en enda parameter.
- Du kan använda en rad strukturer för att lagra fler poster med liknande typer.
Fördelar med förening
Här är fördelar/fördelar med att använda union:
- Den upptar mindre minne jämfört med struktur.
- När du använder union kan endast den sista variabeln nås direkt.
- Union används när du måste använda samma minnesplats för två eller flera datamedlemmar.
- Det gör att du kan lagra data från endast en datamedlem.
- Dess tilldelade utrymme är lika med maximal storlek på datamedlemmen.
Nackdelar med struktur
Här är nackdelar/nackdelar med att använda struktur:
- Om komplexiteten i IT-projekt går över gränsen blir det svårt att hantera.
- Ändring av en datastruktur i en kod kräver ändringar på många andra ställen. Därför blir förändringarna svåra att spåra.
- Strukturen är långsammare eftersom den kräver lagringsutrymme för all data.
- Du kan hämta vilken medlem som helst åt gången i strukturen medan du kan komma åt en medlem åt gången i förbundet.
- Strukturen tar plats för varje medlem skriven i inre parametrar medan union upptar utrymme för en medlem som har den högsta storleken skriven i inre parametrar.
- Strukturen stöder flexibel array. Union stöder inte en flexibel array.
Nackdelar med fackförening
Här är nackdelar/nackdelar med att använda union:
- Du kan bara använda en fackmedlem åt gången.
- Alla unionsvariabler kan inte initieras eller användas med varierande värden åt gången.
- Unionen tilldelar ett gemensamt lagringsutrymme för alla sina medlemmar.
NYCKELSKILLNADER:
- Varje medlem inom strukturen tilldelas en unik minnesplats medan i förening en minnesplats delas av alla datamedlemmar.
- Att ändra värdet på en datamedlem kommer inte att påverka andra datamedlemmar i strukturen, medan ändring av värdet på en datamedlem kommer att ändra värdet på andra datamedlemmar i föreningen.
- Struktur används främst för att lagra olika datatyper medan union huvudsakligen används för att lagra en av de många datatyperna.
- I strukturen kan du hämta vilken medlem som helst åt gången, å andra sidan fackligt kan du komma åt en medlem åt gången.
- Struktur stöder flexibel array medan union inte stöder en flexibel array.
Kolla också vår C-handledning för nybörjare:- Klicka här