Ključna razlika – Struktura naspram unije u C
Niz je podatak strukturiran podržan jezikom C. Niz se može koristiti za pohranjivanje podatkovnih elemenata iste vrste. Ako postoji izraz kao int oznake [10]; tada su oznake niz koji može pohraniti deset oznaka i sve su one cijeli brojevi. Ponekad je potrebno pohraniti podatkovne elemente različitih tipova na isto memorijsko mjesto. Na primjer, zaposlenik može imati ID zaposlenika, ime, odjel, dob itd. Oni su različitih vrsta podataka. Stoga je potrebno imati metodu za pohranjivanje različitih podatkovnih elemenata kao jedne cjeline. Strukture i unije u C-u koriste se za pohranjivanje podatkovnih elemenata različitih vrsta na istoj memorijskoj lokaciji. Struktura i unija su slične, ali se uglavnom razlikuju zbog raspodjele memorije. Memorija potrebna za pohranjivanje varijable strukture zbroj je veličine memorije svih članova. Memorija potrebna za pohranu varijable unije je memorija potrebna za najveći element u uniji. To je ključna razlika između strukture i unije u C-u. Ovaj članak govori o razlici između strukture i unije u C-u.
Što je struktura u C-u?
Struktura je korisnički definirana vrsta podataka u C-u. Pomaže pri kombiniranju podatkovnih stavki različitih vrsta. Struktura može predstavljati zapise. Student može imati student_id, student_name itd. Umjesto pohranjivanja svake varijable zasebno, sve ove različite stavke podataka mogu se sažeti u jednu jedinicu pomoću strukture. Definira se pomoću ključne riječi 'struct'. U strukturi se svim njezinim članovima može pristupiti u bilo koje vrijeme. Sljedeće stvara izvedeni tip podataka struct Student.
struct Student {
intstudent_id;
char student_name[20];
};
Za gornju strukturu, varijable se mogu deklarirati na sljedeći način.
struct Student student1, student2, student3;
Postoje dvije metode za pristup članovima strukture. To je pomoću operatora člana (.) i operatora pokazivača strukture (->). Članovima se može pristupiti pomoću strukture_variable_name. ime člana. Ako programer želi pristupiti imenu učenika 2, tada može napisati naredbu kao printf(student2.ime_studenta);
Pogledajte donji program sa strukturom.
Slika 01: C program sa strukturama
Prema navedenom programu Student je struktura. Sadrži student_id i student_name. U glavnom programu deklarirane su dvije varijable tipa strukture. Zovu se student1 i student2. ID studenta1 dodjeljuje se s vrijednošću 1 pomoću operatora člana kao student1.student_id=1. Ime "Ann" je niz. Stoga se kopira na člana student_name pomoću funkcije kopiranja niza strcpy. Id i ime se dodjeljuju studentu2 na sličan način. Konačno, te se vrijednosti ispisuju pomoću operatora člana.
Količina memorije potrebna za pohranjivanje varijable strukture je zbroj veličine memorije svih članova. Student_id sadrži 4 bajta, a student_name sadrži 20 bajtova (po jedan bajt za svaki znak). Ukupno 24 bajta zbroj je veličine memorije koju zahtijeva struktura.
Što je Union u C?
Unija je korisnički definirana vrsta podataka u C-u. Pomaže pri pohranjivanju različitih vrsta podataka na istoj memorijskoj lokaciji. Knjiga može imati svojstva kao što su book_name, cijena itd. Umjesto stvaranja varijabli za svaku od njih, unija se može koristiti za sažimanje svih različitih tipova podataka u jednu jedinicu pomoću unije. Definira se pomoću ključne riječi 'unija'. Sljedeće stvara knjigu unije podataka.
unionKnjiga{
char name[20];
dvostruka cijena;
};
Za gornju uniju, varijable se mogu deklarirati na sljedeći način.
unija Knjiga knjiga1, knjiga2;
Postoje dvije metode za pristup članovima sindikata. To je pomoću operatora člana (.) i operatora pokazivača strukture (->). Članovima se može pristupiti korištenjem union_variable_name. ime člana. Ako programer želi pristupiti imenu knjige1, tada može napisati naredbu kao printf(book1.name);
Pogledajte donji program sa sindikatom.
Slika 02: C program pomoću unije
Prema navedenom programu, Knjiga je unija. Knjiga1 je varijabla tipa union. Ime i cijena su dodijeljene vrijednosti. U uniji se istovremeno može pristupiti samo jednom njenom članu, a svi ostali članovi imat će otpadne vrijednosti. Vrijednost id-a se ne ispisuje ispravno, ali se vrijednost cijene ispisuje ispravno.
Slika 03: Modificirani C program s unijom
Prema navedenom programu, Book je sindikat. Knjiga1 i knjiga2 su varijable tipa unije. Prvo se dodjeljuje vrijednost za book1 name i ona se ispisuje. Zatim se dodjeljuje vrijednost za ime knjige2 i ona se ispisuje. Svi članovi ispisuju se ispravno jer se jedan po jedan član koristi. Memorija potrebna za pohranjivanje unije je memorija potrebna za najveći element unije. U gornjem programu, varijabla imena je 20 bajtova. Veći je od cijene. Dakle, dodjela memorije za uniju je 20 bajtova.
Koje su sličnosti između strukture i unije u C-u?
- I Struktura i Unija u C-u korisnički su definirane vrste podataka.
- I Struktura i Union u C-u mogu se koristiti za pohranu različitih tipova podataka na istoj memorijskoj lokaciji.
Koja je razlika između strukture i unije u C?
Struktura vs Union u C |
|
Struktura je korisnički definiran tip podataka u jeziku C koji omogućuje kombiniranje podataka različitih tipova zajedno. | Union je korisnički definiran tip podataka u jeziku C koji omogućuje kombiniranje podataka različitih tipova zajedno. |
Pristupačnost | |
U strukturi, svim njezinim članovima može se pristupiti u bilo kojem trenutku. | U uniji, samo jednom od njegovih članova može se pristupiti u isto vrijeme, a svi ostali članovi će sadržavati otpadne vrijednosti. |
Dodjela memorije | |
Memorija potrebna za pohranjivanje varijable strukture je zbroj veličine memorije svih članova. | Memorija potrebna za pohranu varijable unije je memorija potrebna za najveći element u uniji. |
Ključna riječ | |
Ključna riječ koja se koristi za definiranje strukture je 'struct'. | Ključna riječ koja se koristi za definiranje unije je 'unija'. |
Sažetak – Struktura vs Union u C
Niz se koristi za pohranjivanje podatkovnih elemenata iste vrste. Ponekad je potrebno pohraniti podatkovne elemente različitih tipova na isto memorijsko mjesto. Programski jezik C osigurava strukturu i uniju za postizanje ovog zadatka. Obje su korisnički definirane vrste podataka. Memorija potrebna za pohranjivanje varijable strukture zbroj je veličine memorije svih članova. Memorija potrebna za pohranu varijable unije je memorija potrebna za najveći element u uniji. Ovo je razlika između strukture i unije u C.