Forskel mellem struktur og union Forskellen mellem

Anonim

Begge struktur og union er brugerdefinerede datatyper i C-sprog og er konceptuelt ens, men de er stadig forskellige på nogle måder som den måde, hvorpå hukommelsen er allokeret til deres medlemmer. De er erklæret ens, men de fungerer forskelligt. De giver brugeren mulighed for at kombinere forskellige datatyper under et enkelt navn. Mens separat hukommelsesplacering anvendes til hvert medlem, når de erklærer strukturvariabler, deler de forskellige medlemmer af en union variabel den samme hukommelsesplacering. Lad os studere forskellen mellem struktur og union er detaljer.

Hvad er struktur?

En struktur er blot en anden brugerdefineret datatype i C, der giver brugeren mulighed for at kombinere datatyper af forskellige slags i en enkelt type i en blok af hukommelse. En struktur kan indeholde både enkle og komplekse datatyper relateret til hinanden, hvilket ellers ikke giver mening. Hvert medlem inden for en struktur får sin egen hukommelsesplacering, så den kan tilgås og hentes til enhver tid.

En struktur bruges, når mange data skal gruppere som en mappe, der gemmer oplysninger om mange medlemmer i en bog eller en adressebog, der gemmer alle oplysninger om en enkelt kontakt - navn, adresse, kontakt nummer og så videre. Adressen til hvert medlem vil være i stigende rækkefølge, hvilket betyder, at hukommelsen for hvert medlem vil starte ved forskellige forskydningsværdier. Ændring af værdien af ​​et medlem vil ikke have nogen virkning for andre medlemmer.

Et 'struct' søgeord bruges til at definere en struktur af forskellige datatyper under et enkelt navn. Hvis du f.eks. Vil oprette en medarbejderdatabase, skal du lagre medarbejderens navn, alder, telefon og lønoplysninger under en enkelt enhed. Dette gøres ved hjælp af søgeordet 'struct', som derefter fortæller kompilatoren, at en struktur er blevet erklæret.

struct medarbejder {

strengnavn;

streng alder;

streng telefon;

strengløn;

} emp1, emp2;

Her er 'medarbejder' navnet på strukturen, og to variabler 'emp1' og 'emp2' er oprettet af typen 'medarbejder'. Lukkestængerne skal efterfølges af en semikolon (;).

Medlemmer af en struktur kan få adgang til to typer operatører:

  1. Medlemsoperatør
  2. Structure pointer operator

Hvad er Union?

Det er en speciel datatype, der anvendes i C, som giver brugeren mulighed for at lagre datatyper af forskellig art i samme hukommelsessted. En fagforening svarer meget til en struktur, og den kan defineres ved at erstatte søgeordet 'struct' med søgeordet 'union'. Medlemmerne overlejrer hinanden i hinanden i en union, og den er stor nok til at passe alle dets medlemmer.

Når en variabel er forbundet med union, tildeler kompilatoren hukommelsen ved at tage højde for størrelsen af ​​den største hukommelse, så størrelsen af ​​en union er lig med størrelsen af ​​det største dataelement.En union kan defineres med mange medlemmer, men kun ét medlem indeholder værdien på et givet tidspunkt.

Adressen er ens for alle medlemmer af en fagforening, som betyder, at hvert medlem starter med samme forskydningsværdi. Og ændring af værdien af ​​et medlem vil påvirke andre medlemmers værdier. En union kan bruges, når du ønsker at gemme noget, der er en af ​​flere datatyper.

union medarbejder {

char name [32];

alder;

flydende løn;

};

Her definerer søgeordet 'union' foreningen, der svarer til strukturens erklæring. Variablen kan enten gemme en strengværdi, som er 'medarbejderens navn', et heltalsværdi, som er 'medarbejderens alder' eller en float, der repræsenterer 'lønnen til medarbejderen'.

Forskel mellem struktur og union

1. Søgeord

Nøgleordet 'struct' bruges til at definere en struktur, mens 'union' nøgleord bruges til at definere en union.

2. Hukommelsestildeling

Der er afsat separat hukommelsesplads til medlemmerne i en struktur, og medlemmerne har forskellige adresser, der ikke deler hukommelsen. En union, derimod, deler det samme hukommelsesrum for alle dets medlemmer, så delet hukommelsessted tildeles.

3. Medlemstilgang

En fagforening gemmer en enkelt værdi ad gangen, for alle dets medlemmer gør tilgængelighed til kun ét medlem ad gangen. Mens flere værdier kan lagres i en struktur, så kan enhver medlemsværdi til enhver tid åbnes og hentes.

4. Størrelse

Størrelsen af ​​en struktur er lig med summen af ​​størrelsen på alle medlemmer eller mere, mens størrelsen af ​​en union er lig med størrelsen af ​​det største størrelse medlem.

5. Initialisering

I en struktur kan flere medlemmer initialiseres på en gang, mens i en union kun det første medlem kan initialiseres med værdien af ​​sin type.

5. Værdi

En struktur kan gemme forskellige værdier af alle medlemmerne, og ændring i værdien af ​​et medlem vil ikke have nogen effekt på andre medlemmers værdier. Mens en union gemmer samme værdi for alle dets medlemmer og værdiændring af et medlem vil påvirke værdien af ​​andre.

Struktur vs Union

Struktur Union
Strukturord er brugt til at definere en struktur. Unionens søgeord bruges til at definere en union.
Medlemmer deler ikke hukommelse i en struktur. Medlemmer deler hukommelsespladsen i en union.
Ethvert medlem kan hentes til enhver tid i en struktur. Der er kun adgang til et medlem ad gangen i en fagforening.
Flere medlemmer af en struktur kan initialiseres på én gang. Kun det første medlem kan initialiseres.
Størrelsen af ​​strukturen er lig med summen af ​​størrelsen af ​​hvert medlem. Foreningens størrelse svarer til størrelsen af ​​det største medlem.
Ændring af et medlems værdi påvirker ikke værdien af ​​en anden. Ændring i værdi for et medlem vil påvirke andre medlemsværdier.
Gemmer forskellige værdier for alle medlemmerne. Gemmer samme værdi for alle medlemmerne.

Sammenfatning

  • Både strukturen og foreningen er brugerdefinerede datatyper i C, der er funktionelt og konceptuelt de samme, men er ganske forskellige på nogle måder.
  • Begge indeholder variabler af forskellige datatyper, men de bruger den samme syntaks til deklaration af variabler og adgang til medlemmer. Mens en struktur er defineret af 'struct' nøgleordet, defineres en union af søgeordet 'union'.
  • Hvert medlem får separat hukommelsesplacering i en struktur, mens i et fagforening svarer det totale lagerplads til det største størrelsesmedlem. Alle medlemmer deler samme hukommelsesplads i en union.
  • Ethvert medlem i en hvilken som helst sekvens kan fås i en struktur, mens i en union kun der kan fås adgang til den variabel, hvis værdi for nylig er gemt.