Forskjellen mellom struktur og union

Både strukturen og foreningen er brukerdefinerte datatyper i C Language og er konseptuelt de samme, men de er fortsatt forskjellige på noen måter som måten minne er tildelt til sine medlemmer. De er erklært på samme måte, men de fungerer annerledes. De tillater brukeren å kombinere ulike datatyper under et enkelt navn. Mens separat minneplassering brukes for hvert medlem når deklarerer strukturvariabler, deler de forskjellige medlemmene av en forening variabel samme minneplassering. La oss studere forskjellen mellom struktur og fagforening er detalj.

Hva er struktur?

En struktur er bare en annen brukerdefinert datatype i C som lar brukeren kombinere datatyper av forskjellige slag til en enkelt type i en blokk med minne. En struktur kan inneholde både enkle og komplekse datatyper knyttet til hverandre, noe som ellers ikke vil gi mening. Hvert medlem i en struktur får sin egen minneplass slik at den kan nås og hentes når som helst.

En struktur brukes når mange data trenger gruppering som en katalog som lagrer informasjon om mange medlemmer i en bok eller en adressebok som lagrer all informasjon om en enkelt kontakt - navn, adresse, kontaktnummer og så videre. Adressen til hvert medlem vil være i stigende rekkefølge, noe som betyr at minnet til hvert medlem vil starte ved forskjellige offsetverdier. Endring av verdien av ett medlem vil ikke ha noen effekt på andre medlemmer.

Et «struct» -ordord brukes til å definere en struktur av forskjellige datatyper under et enkelt navn. For eksempel, hvis du vil opprette en ansatt database, må du lagre ansattes navn, alder, telefon og lønnsdetaljer under en enkelt enhet. Dette gjøres av søkeordet 'struct', som deretter forteller kompilatoren at en struktur er blitt erklært.

struct ansatt

streng navn;

streng alder;

streng telefon;

strenglønn;

emp1, emp2;

Her er 'ansatt' navnet på strukturen og to variabler emp1 'og' emp2 'er opprettet av typen' ansatt '. De avsluttende bøylene må etterfølges av et semikolon (;).

Medlemmer av en struktur kan nås av to typer operatører:

  1. Medlemsoperatør
  2. Strukturpekeroperatør

Hva er Union?

Det er en spesiell datatype som brukes i C som tillater brukeren å lagre datatyper av forskjellige slag på samme minnested. En union er ganske lik en struktur, og den kan defineres ved å erstatte søkeordet 'struct' med søkeordet 'union'. Medlemmene overlegger minnet til hverandre i en union og det er stort nok til å passe alle medlemmene.

Når en variabel er knyttet til fagforening, tilordner kompilatoren minnet ved å vurdere størrelsen på det største minnet, så størrelsen på en union er lik størrelsen på det største dataelementet. En union kan defineres med mange medlemmer, men bare ett medlem inneholder verdien på et gitt tidspunkt.

Adressen er den samme for alle medlemmer av en fagforening som betyr at hvert medlem starter med samme offsetverdi. Hvis du endrer verdien av ett medlem, vil det påvirke verdiene til andre medlemmer. En union kan brukes når du ønsker å lagre noe som er en av flere datatyper.

fagforeningens ansatt

char navn [32];

int alder;

flyte lønn;

;

Her definerer søkeordet 'union' foreningen som er ganske lik strukturdeklarasjonen. Variabelen kan enten lagre en strengverdi som er "ansattes navn", et heltall som er "ansattes alder", eller en flyt som representerer "lønn til ansatt".

Forskjellen mellom struktur og union

1. Søkeord

Søkeordet 'struct' brukes til å definere en struktur, mens 'union' søkeord brukes til å definere en union.

2. Minnetildeling

Separat minne plasseres for medlemmene i en struktur, og medlemmene har forskjellige adresser som ikke deler minne. En union, derimot, deler samme minnesplass for alle sine medlemmer, slik at delt minneplass blir tildelt.

3. Medlemstilgang

En fagforening lagrer en enkelt verdi om gangen for alle medlemmene som gjør tilgjengelighet til bare ett medlem av gangen. Mens flere verdier kan lagres i en struktur, kan noen medlemsverdier nås og hentes når som helst.

4. Størrelse

Størrelsen på en struktur er lik summen av størrelsen på alle medlemmer eller mer, mens størrelsen på en union er lik størrelsen på den største størrelsen medlem.

5. Initialisering

I en struktur kan flere medlemmer initialiseres på en gang, mens i et fagforbund kan bare det første medlemmet initialiseres med verdien av sin type.

5. Verdi

En struktur kan lagre ulike verdier av alle medlemmene, og endring i verdien av ett medlem vil ikke ha noen effekt på verdiene til andre medlemmer. Mens en union lagrer samme verdi for alle medlemmene og verdiendring av ett medlem vil påvirke verdien av andre.

Struktur vs Union

Struktur Union
Struct-søkeord brukes til å definere en struktur. Unionens søkeord brukes til å definere en union.
Medlemmer deler ikke minne i en struktur. Medlemmer deler minneplassen i en union.
Ethvert medlem kan hentes når som helst i en struktur. Bare ett medlem kan nås på en tid i en fagforening.
Flere medlemmer av en struktur kan initialiseres samtidig. Bare det første medlemmet kan initialiseres.
Størrelsen på strukturen er lik summen av størrelsen på hvert medlem. Størrelsen på foreningen er lik størrelsen på det største medlemmet.
Endring av verdi av ett medlem vil ikke påvirke verdien til en annen. Endring i verdien av ett medlem vil påvirke andre medlemsverdier.
Lagrer ulike verdier for alle medlemmene. Lagrer samme verdi for alle medlemmene.

Sammendrag

  • Både strukturen og foreningen er brukerdefinerte datatyper i C som er funksjonelt og konseptuelt de samme, men er ganske forskjellige på noen måter.
  •  Begge inneholder variabler av forskjellige datatyper, men de bruker samme syntaks for deklarasjon av variabler og tilgang til medlemmer. Mens en struktur er definert av søkeordet "struct", defineres en union av søkeordet "union".
  • Hvert medlem får separat minneplass i en struktur, mens i en union er den totale minnesplassen ekvivalent med det største størrelsesmedlemmet. Alle medlemmene deler samme minneplass i en union.
  • Et hvilket som helst medlem i en hvilken som helst sekvens kan nås i en struktur, mens i en union, kun den variabelen kan nås, verdien er nylig lagret.