Forskel mellem struktur og union

Indholdsfortegnelse:

Anonim

Hvad er struktur?

Struktur er en brugerdefineret datatype i C-programmeringssprog, der kombinerer logisk relaterede dataelementer af forskellige datatyper sammen.

Alle strukturelementerne er gemt på sammenhængende hukommelsessteder. Strukturtypevariabel kan gemme mere end et dataelement med forskellige datatyper under ét navn.

I denne vejledning lærer du:

  • Hvad er struktur?
  • Hvad er Union
  • Syntaks for deklarerende struktur
  • Eksempel på struktur i C-programmering
  • Syntaks for erklærende union
  • Eksempel på Union i C-programmering
  • Struktur vs. Union
  • Fordele ved struktur
  • Fordele ved fagforening
  • Ulemper ved struktur
  • Ulemper ved fagforening

Hvad er Union

Union er en brugerdefineret datatype, ligesom en struktur. Union kombinerer objekter af forskellige typer og størrelser sammen. Forbundsvariablen tildeler hukommelsespladsen lig med pladsen til at indeholde den største variabel af foreningen. Det giver forskellige typer objekter mulighed for 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 "struct" nøgleordet og navnet på strukturen. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af strukturen. Kroppsdelen afsluttes med et semikolon (;).

Eksempel på struktur i C-programmering

#include 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 student. Denne struktur har tre dataelementer: 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.

Produktion:

Indtast følgende oplysninger:

Indtast studerendes navn: James

Indtast elevrolle nummer: 21

Indtast studerendes karakterer: 67

De oplysninger, du har indtastet, er:

Studerendes navn: John

Studenterrullens nummer: 21

Elevkarakter: 67.0

Syntaks for erklærende union

union [name of union]{type member1;type member2;type member3;};

Union erklæres ved hjælp af nøgleordet "union" og navnet på fagforeningen. Nummer 1, nummer 2, nummer 3 er individuelle medlemmer af fagforeningen. Kroppsdelen afsluttes med et semikolon (;).

Eksempel på Union i C-programmering

#include 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

-en

I ovenstående program kan du se, at værdierne for x og y bliver ødelagt. Kun variabel ch udskriver det forventede resultat. Det skyldes, at hukommelsesplaceringen i fagforening deles mellem alle medlemsdatatyper.

Derfor vil det eneste data-medlem, hvis værdi i øjeblikket er lagret, optage hukommelsesplads. Værdien af ​​variablen ch blev til sidst gemt, så værdien af ​​resten af ​​variablerne går tabt.

Struktur vs. Union

Her er den vigtige forskel mellem struktur og union:

Struktur Union
Du kan bruge et struct-nøgleord til at definere en struktur. Du kan bruge et fagord for at definere en sammenslutning.
Hvert medlem inden for strukturen tildeles en unik hukommelsesplacering. I fagforening deles en hukommelsesplacering af alle datamedlemmerne.
Ændring af værdien af ​​et datamedlem påvirker ikke andre datamedlemmer i struktur. Ændring af værdien af ​​et datamedlem ændrer værdien af ​​andre datamedlemmer i fagforeningen.
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 på hvert datamedlem. Den samlede størrelse af fagforeningen er størrelsen på 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, der har den højeste størrelse skrevet i indre parametre.
Du kan hente ethvert medlem ad gangen. Du kan få adgang til et 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 et stykke data om det samme emne sammen på samme sted.
  • Det er nyttigt, når du vil indsamle data for lignende datatyper og parametre som fornavn, efternavn osv.
  • Det er meget let at vedligeholde, da vi kan repræsentere hele posten ved hjælp af et enkelt navn.
  • I struktur kan vi overføre 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, kan kun den sidste variabel fås direkte adgang.
  • Union bruges, når du skal bruge den samme hukommelsesplacering til to eller flere datamedlemmer.
  • Det giver dig mulighed for kun at gemme data fra et datamedlem.
  • Dens tildelte plads er lig med datamedlemmets maksimale størrelse.

Ulemper ved struktur

Her er ulemper / ulemper ved at bruge struktur:

  • Hvis it-projektets kompleksitet går ud over grænsen, bliver det svært at administrere.
  • Ændring af en 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 struktur, 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 for 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 et fagforeningsmedlem ad gangen.
  • Alle foreningsvariabler kan ikke initialiseres eller bruges med forskellige værdier ad gangen.
  • Union tildeler et fælles lagerplads til alle sine medlemmer.

Nøgleforskelle:

  • Hvert medlem inden for strukturen tildeles en unik hukommelsesplacering, mens en forening en hukommelsesplacering deles af alle data-medlemmerne.
  • Ændring af værdien af ​​et datamedlem påvirker ikke andre datamedlemmer i struktur, mens ændring af værdien af ​​et datamedlem vil ændre værdien af ​​andre datamedlemmer i union.
  • Struktur bruges hovedsageligt til lagring af forskellige datatyper, mens union hovedsageligt bruges til lagring af en af ​​de mange datatyper.
  • I struktur kan du hente ethvert medlem ad gangen på den anden side i union, du kan få adgang til et medlem ad gangen.
  • Struktur understøtter fleksibelt array, mens union ikke understøtter et fleksibelt array.