Razlika između strukture i unije

I struktura i zajednica su korisnički definirani tipovi podataka u jeziku C i konceptualno su isti, ali se i dalje na neke načine razlikuju poput načina dodjele memorije svojim članovima. Oni su deklarirani na sličan način, ali djeluju drugačije. Omogućuju korisniku da kombinira različite vrste podataka pod jednim imenom. Dok se za proglašavanje varijabli strukture upotrebljava zasebno memorijsko mjesto za svakog člana, različiti članovi varijable unije dijele isto mjesto u memoriji. Proučimo razliku između strukture i sjedinjenja.

Što je struktura?

Struktura je samo još jedan korisnički definirani tip podataka u C koji korisniku omogućuje kombiniranje tipova podataka različitih vrsta u jednu vrstu u bloku memorije. Struktura može sadržavati jednostavne i složene tipove podataka međusobno povezane, što inače neće imati smisla. Svaki član unutar strukture dobiva svoje vlastito mjesto u memoriji tako da joj se može pristupiti i preuzeti bilo kada.

Struktura se koristi kada je za puno podataka potrebno grupiranje poput direktorija koji pohranjuje informacije o mnogim članovima u knjizi ili adresara koji pohranjuje sve informacije o jednom kontaktu - ime, adresu, kontaktni broj i tako dalje. Adresa svakog člana biti će u uzlaznom redoslijedu, što znači da će memorija svakog člana započeti s različitim offset vrijednostima. Promjena vrijednosti jednog člana neće imati utjecaja na ostale članove.

Ključna riječ "struct" koristi se za definiranje strukture različitih vrsta podataka pod jednim nazivom. Na primjer, ako želite stvoriti bazu podataka zaposlenika, morat ćete pohraniti podatke o zaposleniku, dobi, telefonu i plaćama u jedan entitet. To je učinjeno ključnom riječi 'struct', koja zatim prevoditelju govori da je struktura deklarirana.

zaposlenik strukture

naziv niza;

struna dob;

kabelski telefon;

niz plaća;

emp1, emp2;

Ovdje je 'zaposlenik' naziv strukture, a dvije vrste 'emp1' i 'emp2' kreirane su tipa 'zaposlenik'. Ograde moraju biti praćene zarezom (;).

Članovima strukture mogu pristupiti dvije vrste operatera:

  1. Član operatora
  2. Struktura operatera pokazivača

Što je Unija?

To je posebna vrsta podataka koja se koristi u C-u koja korisniku omogućuje pohranu podataka različitih vrsta u istu memorijsku lokaciju. Sindikat je prilično sličan strukturi i može se definirati zamjenom ključne riječi 'struktura' ključnom riječju 'unija'. Članovi preklapaju sjećanje jedni druge u zajednici i dovoljno je velik da može stati na sve članove.

Kad se varijabla pridruži savezu, prevoditelj raspoređuje memoriju uzimajući u obzir veličinu najveće memorije, tako da je veličina unije jednaka veličini najvećeg člana podataka. Sindikat se može definirati s mnogim članovima, ali samo jedan član sadrži vrijednost u bilo kojem trenutku vremena.

Adresa je ista za sve članove sindikata, što znači da svaki član započinje s istom pomaknutom vrijednošću. Promjena vrijednosti jednog člana utjecat će i na vrijednosti ostalih članova. Udruživanje se može koristiti kada želite pohraniti nešto što je jedna od nekoliko vrsta podataka.

sindikalni zaposlenik

ime char [32];

int dob;

plutajuća plaća;

;

Ovdje ključna riječ 'unija' definira uniju koja je prilično slična deklaraciji strukture. Varijabla može pohraniti niže vrijednosti koja je "ime zaposlenika", cjelobrojnu vrijednost koja je "starost zaposlenika", ili float koji predstavlja "plaću zaposlenika".

Razlika između strukture i unije

1. Ključna riječ

Ključna riječ "struct" koristi se za definiranje strukture dok se ključna riječ "union" koristi za definiranje unije.

2. Dodjela memorije

Za članove u strukturi odvojen je memorijski prostor, a članovi imaju različite adrese koje ne dijele memoriju. Savez, s druge strane, dijeli isti memorijski prostor za sve svoje članove, tako da je dodijeljena zajednička memorijska lokacija.

3. Pristup članova

Sindikat pohranjuje pojedinačnu vrijednost istodobno za sve članove koji omogućuju pristup samo jednom članu. Premda se višestruke vrijednosti mogu pohraniti u strukturu, tako da bilo kojoj vrijednosti člana može se pristupiti i preuzeti u bilo kojem trenutku.

4. Veličina

Veličina strukture jednaka je zbroju veličina svih članova ili više, dok je veličina unije jednaka veličini člana najveće veličine.

5. Inicijalizacija

U strukturi se može odjednom inicijalizirati nekoliko članova odjednom, dok se u uniji samo prvi član može inicijalizirati s vrijednošću svoje vrste.

5. Vrijednost

Struktura može pohraniti različite vrijednosti svih članova i promjena vrijednosti jednog člana neće imati utjecaja na vrijednosti ostalih članova. Dok sindikat pohranjuje istu vrijednost za sve svoje članove i promjena vrijednosti jednog člana utjecat će na vrijednost drugih.

Struktura protiv Unije

Struktura Unija
Ključna riječ Struct koristi se za definiranje strukture. Ključna riječ unije koristi se za definiranje unije.
Članovi ne dijele memoriju u strukturi. Članovi dijele memorijski prostor u zajednici.
U bilo kojem trenutku u strukturi se može dohvatiti bilo koji član. Istog trenutka u sindikatu može pristupiti samo jednom članu.
Odjednom se može inicijalizirati nekoliko članova strukture. Samo prvi član može se inicijalizirati.
Veličina strukture jednaka je zbroju veličina svakog člana. Veličina saveza jednaka je veličini najvećeg člana.
Izmjena vrijednosti jednog člana neće utjecati na vrijednost drugog. Promjena vrijednosti jednog člana utjecat će na vrijednosti ostalih članova.
Pohranjuje različite vrijednosti za sve članove. Pohranjuje istu vrijednost za sve članove.

Sažetak

  • I struktura i zajednica su korisnički definirani tipovi podataka u C koji su funkcionalno i konceptualno isti, ali su na neki način prilično različiti..
  •  Obje sadrže varijable različitih vrsta podataka, ali koriste istu sintaksu za deklariranje varijabli i pristup članovima. Dok je struktura definirana ključnom riječi "struct", unija je definirana ključnom riječi "union".
  • Svaki član dobiva zasebnu memorijsku lokaciju u strukturi, dok je u zajednici ukupni memorijski prostor ekvivalentan članu najveće veličine. Svi članovi dijele isti memorijski prostor u zajednici.
  • Bilo kojem članu u bilo kojem nizu može se pristupiti u strukturi, dok se u zajednici može pristupiti samo toj varijabli čija je vrijednost nedavno pohranjena.