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.
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:
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".
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 | 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. |