Ključna razlika – struktura u odnosu na uniju u C
Niz je strukturirani podaci koji podržava C jezik. Niz se može koristiti za pohranjivanje elemenata podataka istog tipa. Ako postoji izraz kao int oznake [10]; tada su oznake niz koji može pohraniti deset oznaka i svi su cijeli brojevi. Ponekad je potrebno pohraniti elemente podataka različitih tipova na istoj memorijskoj lokaciji. Na primjer, zaposlenik može imati ID zaposlenika, ime, odjel, godine itd. Oni su različitih tipova podataka. Stoga je potrebno imati metodu za pohranjivanje različitih elemenata podataka kao jedne jedinice. Strukture i unije u C-u se koriste za pohranjivanje elemenata podataka različitih tipova na istoj memorijskoj lokaciji. Struktura i unija su slični, ali se uglavnom razlikuju zbog alokacije memorije. Memorija potrebna za pohranjivanje varijable strukture je zbir veličine memorije svih članova. Memorija potrebna za pohranjivanje varijable unije je memorija potrebna za najveći element u uniji. To je ključna razlika između strukture i sindikata u C. Ovaj članak govori o razlici između strukture i sindikata u C.
Šta je struktura u C?
Struktura je korisnički definirani tip podataka u C. Pomaže u kombinaciji stavki podataka različitih tipova. Struktura može predstavljati zapise. Učenik može imati student_id, student_name itd. Umjesto da pohranjuju svaku varijablu zasebno, sve ove različite stavke podataka mogu biti kompaktne u jednu jedinicu koristeći strukturu. Definira se pomoću ključne riječi 'struct'. U strukturi, svim njenim članovima može se pristupiti u bilo koje vrijeme. Sljedeće kreira 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 dva načina za pristup članovima strukture. To je korištenje operatora člana (.) i operatora pokazivača strukture (->). Članovima se može pristupiti koristeći strukturno ime_varijable. ime člana. Ako programer želi pristupiti imenu učenika 2, onda može napisati izjavu kao printf(student2.student_name);
Pogledajte donji program sa strukturom.
Slika 01: C program sa strukturama
Prema gore navedenom programu, Student je struktura. Sadrži student_id i student_name. Dvije varijable tipa strukture su deklarirane u glavnom programu. Zovu se student1 i student2. ID-u studenta1 dodjeljuje se vrijednost 1 koristeći operator člana kao student1.student_id=1. Ime “Ann” je niz. Stoga se kopira u student_name člana koristeći funkciju string copy strcpy. Id i ime se dodjeljuju student2 na sličan način. Konačno, te vrijednosti se ispisuju korištenjem operatora člana.
Količina memorije potrebna za pohranjivanje varijable strukture je zbir veličine memorije svih članova. Student_id sadrži 4 bajta, a student_name sadrži 20 bajtova (po jedan bajt za znak). Ukupno 24 bajta je zbir veličine memorije potrebne za strukturu.
Šta je Union u C?
Unija je korisnički definirani tip podataka u C. Pomaže pohranjivanje različitih tipova podataka na istoj memorijskoj lokaciji. Knjiga može imati svojstva kao što su ime_knjige, cijena itd. Umjesto kreiranja 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 kreira knjigu sindikata izvedenih podataka.
unionBook{
char name[20];
dvostruka cijena;
};
Za gornju uniju, varijable se mogu deklarirati na sljedeći način.
union Book book1, book2;
Postoje dva načina pristupa članovima sindikata. To je korištenje operatora člana (.) i operatora pokazivača strukture (->). Članovima se može pristupiti koristeći union_variable_name. ime člana. Ako programer želi pristupiti nazivu knjige1, onda može napisati naredbu kao printf(book1.name);
Pogledajte donji program sa sindikatom.
Slika 02: C program koristeći union
Prema gore navedenom programu, Knjiga je unija. Knjiga1 je varijabla tipa union. Naziv i cijena su dodijeljene vrijednosti. U sindikatu, samo jednom od njegovih članova može se pristupiti istovremeno, a svi ostali članovi će imati vrijednosti smeća. Vrijednost id-a se ne ispisuje ispravno, ali se vrijednost cijene ispisuje ispravno.
Slika 03: Modifikovani C program sa spojem
Prema gore navedenom programu, Book je sindikat. book1 i book2 su varijable tipa unije. Prvo se dodjeljuje vrijednost za ime book1 i ona se ispisuje. Zatim se dodjeljuje vrijednost za ime book2 i ona se ispisuje. Svi članovi se ispisuju ispravno jer se koristi jedan po jedan član. Memorija potrebna za pohranjivanje unije je memorija potrebna za najveći element unije. U gornjem programu, varijabla name je 20 bajtova. Veća je od cijene. Dakle, dodjela memorije za uniju je 20 bajtova.
Koje su sličnosti između strukture i unije u C?
- I struktura i unija u C-u su korisnički definirani tipovi podataka.
- Structure i Union u C se mogu koristiti za pohranjivanje različitih tipova podataka na istoj memorijskoj lokaciji.
Koja je razlika između strukture i unije u C?
Structure vs Union u C |
|
Structure je korisnički definirani tip podataka u jeziku C koji omogućava kombinovanje podataka različitih tipova zajedno. | Union je korisnički definirani tip podataka u jeziku C koji omogućava kombinovanje podataka različitih tipova zajedno. |
Pristupačnost | |
U strukturi, svim njenim članovima može se pristupiti u bilo koje vrijeme. | U sindikatu, samo jednom od njegovih članova može se pristupiti istovremeno, a svi ostali članovi će sadržavati đubretne vrijednosti. |
Dodjela memorije | |
Memorija potrebna za pohranjivanje varijable strukture je zbir veličine memorije svih članova. | Memorija potrebna za pohranjivanje 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 sindikata je 'unija'. |
Sažetak – Struktura protiv unije u C
Niz se koristi za pohranjivanje elemenata podataka istog tipa. Ponekad je potrebno pohraniti elemente podataka različitih tipova na istoj memorijskoj lokaciji. Programski jezik C pruža strukturu i uniju za postizanje ovog zadatka. Oba su korisnički definirani tipovi podataka. Memorija potrebna za pohranjivanje varijable strukture je zbir veličine memorije svih članova. Memorija potrebna za pohranjivanje varijable unije je memorija potrebna za najveći element u uniji. Ovo je razlika između strukture i sindikata u C.