Struktura i Unija
Struktura i unija su korisnički definirani tipovi podataka u C jeziku i konceptualno su isti, no ipak su na neki način različiti, kao što je način na koji se memorija dodjeljuje njihovim članovima. Oni su deklarirani slično, ali funkcioniraju drugačije. Omogućuju korisniku da kombinira različite vrste podataka pod jednim nazivom. Dok se zasebna lokacija memorije koristi za svakog člana pri deklariranju varijabli strukture, različiti članovi sindikalne varijable dijele isti memorijski položaj. Proučavajmo razliku između strukture i pojedinosti.
Što je struktura?
Struktura je samo još jedna korisnički definirana vrsta podataka u C koja omogućuje korisniku da kombinira vrste podataka različitih vrsta u jednu vrstu u bloku memorije. Struktura može sadržavati i jednostavne i složene vrste podataka koje se međusobno odnose, što inače nema smisla. Svaki član unutar strukture dobiva vlastitu memorijsku lokaciju tako da se može pristupiti i dohvatiti u bilo kojem trenutku.
Struktura se koristi kada se mnogi podaci grupiraju poput direktorija koji pohranjuje informacije o mnogim članovima u knjizi ili adresaru koji pohranjuje sve informacije o jednom kontaktu - ime, adresa, broj kontakta i tako dalje. Adresa svakog člana bit će u rastućem poretku, što znači da će memorija svakog člana početi s različitim offset vrijednostima. Promjena vrijednosti jednog člana neće utjecati na druge članove.
Ključna riječ "struct" koristi se za definiranje strukture različitih vrsta podataka pod jednim nazivom. Na primjer, ako želite stvoriti bazu zaposlenika, morat ćete pohraniti ime, dob, telefon i podatke o plaći zaposlenika pod jednim entitetom. To se vrši ključnom riječi "struct", koja tada prevodi prevoditelja da je struktura proglašena.
strukturni zaposlenik {
naziv niza;
string age;
string telefon;
string plaća;
} emp1, emp2;
Ovdje je "zaposlenik" naziv strukture i dvije varijable 'emp1' i 'emp2' su stvorene od tipa 'zaposlenika'. Završne zagrade moraju slijediti točka-zarez (;).
Članovima strukture mogu pristupiti dvije vrste operatora:
- Operater član
- Strukturni pokazivač operatera
Što je Unija?
To je posebna vrsta podataka koja se koristi u C koja omogućuje korisniku pohranjivanje vrsta podataka različitih vrsta na istom mjestu s memorijom. Sindikat je vrlo sličan strukturi i može se definirati zamjenom ključne riječi "struct" s ključnom riječi "unija". Članovi prekrivaju međusobno sjećanje u zajednici i dovoljno je velika da odgovaraju svim svojim članovima.
Kada je varijabla povezana sa sindikatom, prevodilac alocira memoriju s obzirom na veličinu najveće memorije, pa je veličina udruživanja jednaka veličini najvećeg člana podataka. Jedinstvo 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 počinje s istom offset vrijednošću. Promjena vrijednosti jednog člana utjecat će na vrijednosti ostalih članova. Jedinstvo se može koristiti kada želite pohraniti nešto što je jedna od nekoliko vrsta podataka.
zaposlenik sindikata {
char ime [32];
int age;
plutajuća plaća;
};
Ovdje ključna riječ "unija" definira jedinstvo koje je sasvim slično deklaraciji strukture. Varijabla može pohraniti string vrijednost koja je "naziv zaposlenika", cijela vrijednost koja je "dob zaposlenika" ili float koji predstavlja "plaću zaposlenika".
Razlika između strukture i Unije
1. Riječ
Ključna riječ "struct" koristi se za definiranje strukture, dok se ključna riječ "unija" koristi za definiranje sindikata.
2. Dodjela memorije
Za članove unutar strukture dodjeljuje se odvojeni memorijski prostor, a članovi imaju različite adrese koje ne dijele memoriju. Sindikat, s druge strane, dijeli isti memorijski prostor za sve svoje članove, tako se dijeli lokacija memorije.
3. Pristup članovima
Jedinstveno poduzeće pohranjuje jednu vrijednost istodobno za sve svoje članove koji omogućuju dostupnost samo jednom članu odjednom. Dok se više vrijednosti mogu pohraniti u strukturu, tako da se bilo koja vrijednost člana može pristupiti i dohvatiti u bilo kojem trenutku.
4. Veličina
Veličina strukture je jednaka zbroju veličine svih članova ili više, dok je veličina udruženja jednaka veličini najveće članice.
5. Inicijalizacija
U strukturi, nekoliko članova može se inicijalizirati odjednom, dok se u jednoj jedinici 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 nikakvog utjecaja na vrijednosti drugih članova. Dok sindikat pohranjuje istu vrijednost za sve svoje članove i promjena vrijednosti jednog člana utječe na vrijednost drugih.
Struktura vs Unija
Struktura | Unija |
Struktna ključna riječ koristi se za definiranje strukture. | Ključna riječ Unije koristi se za definiranje sindikata. |
Članovi ne dijele sjećanje u strukturi. | Članovi dijele memorijski prostor u zajednici. |
Bilo koji član može se preuzeti u bilo kojem trenutku u strukturi. | U jednoj jedinici može se pristupiti samo jedan član u isto vrijeme. |
Nekoliko članova strukture može se inicijalizirati odjednom. | Samo prvi član može biti inicijaliziran. |
Veličina strukture je jednaka zbroju veličine svakog člana. | Veličina sindikata jednaka je veličini najvećeg člana. |
Promjena vrijednosti jednog člana neće utjecati na vrijednost drugog. | Promjena vrijednosti jednog člana utjecat će na druge vrijednosti članova. |
Pohranjuje različite vrijednosti za sve članove. | Pohranjuje istu vrijednost za sve članove. |
Sažetak
- Struktura i unija su korisnički definirani tipovi podataka u C koji su funkcionalno i konceptualno isti, ali su na neki način vrlo različiti.
- Oba sadrže varijable različitih vrsta podataka, ali koriste istu sintaksa za deklaraciju varijabli i pristup članovima. Iako je struktura definirana ključnom riječi "struct", sindikat je definiran ključnom riječi "unija".
- Svaka članica dobiva zasebnu memorijsku lokaciju u strukturi, dok je u zajednici ukupni prostor memorije jednak najvećem članu veličine. Svi članovi dijele isti memorijski prostor u zajednici.
- Bilo koji član u bilo kojoj sekciji može se pristupiti u strukturi, dok se u sindikatu može pristupiti samo onoj varijabli čija vrijednost je nedavno pohranjena.