Forskellen mellem struktur og forening i C
Hvad er struktur?
Struktur er en brugerdefineret datatype i programmeringssproget C, der kombinerer logisk relaterede dataelementer af forskellige datatyper sammen.
Alle strukturelementerne er lagret på sammenhængende hukommelsessteder. Strukturtypevariabel kan gemme mere end ét dataelement af forskellige datatyper under ét navn.
Hvad er Union
Union er en brugerdefineret datatype, ligesom en struktur. Union kombinerer genstande af forskellige typer og størrelser sammen. Unionsvariablen tildeler hukommelsespladsen lig med pladsen til at indeholde den største variabel i union. Det gør det muligt for forskellige typer objekter at dele den samme placering.
Syntaks for deklarerende struktur
struct [name of the structure] { type member1; type member2; type member3; };
Struktur erklæres ved hjælp af nøgleordet "struct" og navnet på strukturen. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af strukturen. Kropsdelen afsluttes med semikolon (;).
Eksempel 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 ovenstående program oprettes en struktur kaldet elev. Denne struktur har tre datamedlemmer: 1) navn (streng), 2) roll_no (heltal) og 3) mærker (float).
Herefter oprettes en strukturvariabel sdt til at gemme elevoplysninger og vise dem på computerskærmen.
Output:
Indtast følgende oplysninger:
Indtast elevens navn: James
Indtast elevrullenummer: 21
Indtast elevkarakterer: 67
De oplysninger du har indtastet er:
Elevens navn: John
Elevlistenummer: 21
Elevkarakter: 67.0
Syntaks for at erklære union
union [name of union] { type member1; type member2; type member3; };
Fagforening erklæres ved at bruge nøgleordet "union" og fagforeningens navn. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af fagforeningen. Kropsdelen afsluttes med semikolon (;).
Eksempel 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; }
Output:
1101109601
20.199892
a
I ovenstående program kan du se, at værdierne af x og y bliver ødelagt. Kun variabel ch udskriver det forventede resultat. Det skyldes, at hukommelsesplaceringen i forening er delt mellem alle medlemsdatatyper.
Derfor vil det eneste datamedlem, hvis værdi i øjeblikket er gemt, optage hukommelsesplads. Værdien af variablen ch blev gemt til sidst, så værdien af resten af variabler er tabt.
Struktur vs. Union
Her er den vigtige forskel mellem struktur og forening:
Struktur | Union |
---|---|
Du kan bruge et struct nøgleord til at definere en struktur. | Du kan bruge et fagforeningsnøgleord til at definere en fagforening. |
Hvert medlem i strukturen er tildelt en unik hukommelsesplacering. | I forening er en hukommelsesplacering delt af alle datamedlemmer. |
Ændring af værdien af et datamedlem vil ikke påvirke andre datamedlemmer i strukturen. | Ændring af værdien af et datamedlem vil ændre værdien af andre datamedlemmer i foreningen. |
Det giver dig mulighed for at initialisere flere medlemmer på én gang. | Det giver dig mulighed for kun at initialisere det første medlem af fagforeningen. |
Den samlede størrelse af strukturen er summen af størrelsen af hvert datamedlem. | Fagforeningens samlede størrelse er størrelsen af det største datamedlem. |
Det bruges hovedsageligt til lagring af forskellige datatyper. | Det bruges hovedsageligt til lagring af en af de mange datatyper, der er tilgængelige. |
Det optager plads til hvert eneste medlem skrevet i indre parametre. | Det optager plads til et medlem med den højeste størrelse skrevet i indre parametre. |
Du kan hente ethvert medlem ad gangen. | Du kan få adgang til ét medlem ad gangen i fagforeningen. |
Det understøtter fleksibelt array. | Det understøtter ikke et fleksibelt array. |
Fordele ved struktur
Her er fordele/fordele ved at bruge struktur:
- Strukturer samler mere end ét stykke data om det samme emne sammen på det samme sted.
- Det er nyttigt, når du vil indsamle data fra lignende datatyper og parametre som fornavn, efternavn osv.
- Det er meget nemt at vedligeholde, da vi kan repræsentere hele posten ved at bruge et enkelt navn.
- I strukturen kan vi sende et komplet sæt poster til enhver funktion ved hjælp af en enkelt parameter.
- Du kan bruge en række strukturer til at gemme flere poster med lignende typer.
Fordele ved fagforening
Her er fordele/fordele ved at bruge fagforening:
- Det optager mindre hukommelse sammenlignet med struktur.
- Når du bruger union, er der kun direkte adgang til den sidste variabel.
- Union bruges, når du skal bruge den samme hukommelsesplacering til to eller flere datamedlemmer.
- Det giver dig mulighed for kun at opbevare data for ét datamedlem.
- Dens tildelte plads er lig med den maksimale størrelse af datamedlemmet.
Ulemper ved struktur
Her er ulemper/ulemper ved brug af struktur:
- Hvis kompleksiteten af it-projekter overskrider grænsen, bliver det svært at styre.
- Ændring af én datastruktur i en kode nødvendiggør ændringer mange andre steder. Derfor bliver ændringerne svære at spore.
- Strukturen er langsommere, fordi den kræver lagerplads til alle data.
- Du kan hente ethvert medlem ad gangen i strukturen, mens du kan få adgang til et medlem ad gangen i fagforeningen.
- Struktur optager plads for hvert medlem skrevet i indre parametre, mens union optager plads til et medlem med den højeste størrelse skrevet i indre parametre.
- Struktur understøtter fleksibelt array. Union understøtter ikke et fleksibelt array.
Ulemper ved fagforening
Her er ulemper/ulemper ved at bruge union:
- Du kan kun bruge ét fagforeningsmedlem ad gangen.
- Alle unionsvariabler kan ikke initialiseres eller bruges med varierende værdier ad gangen.
- Unionen tildeler én fælles lagerplads til alle sine medlemmer.
NØGLE FORSKELLE:
- Hvert medlem i strukturen er tildelt en unik hukommelsesplacering, mens en hukommelsesplacering i forening deles af alle datamedlemmer.
- Ændring af værdien af et datamedlem vil ikke påvirke andre datamedlemmer i strukturen, mens ændring af værdien af et datamedlem vil ændre værdien af andre datamedlemmer i foreningen.
- Struktur bruges hovedsageligt til lagring af forskellige datatyper, mens union hovedsageligt bruges til lagring af en af de mange datatyper.
- I strukturen kan du hente ethvert medlem ad gangen, på den anden side i fagforening kan du få adgang til et medlem ad gangen.
- Struktur understøtter fleksibelt array, mens union ikke understøtter et fleksibelt array.
Tjek også vores C Tutorial for begyndere:- Klik her