Atât structura, cât și uniunea sunt tipuri de date definite de utilizator în limbajul C și sunt conceptuale aceleași, totuși acestea sunt diferite în unele moduri, cum ar fi modul în care memoria este alocată membrilor lor. Ele sunt declarate în mod similar, dar funcționează diferit. Acestea permit utilizatorului să combine diferite tipuri de date sub un singur nume. În timp ce locația de memorie separată este folosită pentru fiecare membru atunci când se declară variabilele de structură, diferiții membri ai unei variabile sindicate au aceeași locație de memorie. Să studiem diferența dintre structură și uniune este detaliu.
O structură este doar un alt tip de date definit de utilizator în C, care permite utilizatorului să combine tipuri de date de diferite tipuri într-un singur tip într-un bloc de memorie. O structură poate conține atât tipuri de date simple, cât și complexe, legate între ele, care altfel nu vor avea sens. Fiecare membru dintr-o structură își obține propria locație de memorie, astfel încât să poată fi accesată și recuperată în orice moment.
O structură este utilizată atunci când o multitudine de date necesită gruparea ca un director care stochează informații despre mulți membri într-o carte sau într-o agendă de adrese care stochează toate informațiile despre un singur contact - nume, adresă, număr de contact și așa mai departe. Adresa fiecărui membru va fi în ordine ascendentă, ceea ce înseamnă că memoria fiecărui membru va începe cu valori de offset diferite. Modificarea valorii unui membru nu va avea nici un efect asupra altor membri.
Un cuvânt cheie "struct" este utilizat pentru a defini o structură de tipuri diferite de date sub un singur nume. De exemplu, dacă doriți să creați o bază de date a angajaților, va trebui să stocați numele angajatului, vârsta, telefonul și detaliile salariului sub o singură entitate. Acest lucru se face prin cuvântul cheie "struct", care apoi spune compilatorului că a fost declarată o structură.
struct angajat
numele șirului;
vârstă de șir;
telefon cu fir;
șir salariu;
emp1, emp2;
Aici, "angajat" este numele structurii și două variabile "emp1" și "emp2" sunt create de tipul "angajat". Plăcile de închidere trebuie să fie urmate de un punct și virgulă (;).
Membrii unei structuri pot fi accesați de două tipuri de operatori:
Este un tip de date special folosit în C, care permite utilizatorului să stocheze tipuri de date de diferite tipuri în aceeași locație de memorie. O uniune este destul de similară cu o structură și poate fi definită prin înlocuirea cuvântului cheie "struct" cu cuvântul cheie "uniune". Membrii își suprapun memoria unul altuia într-o uniune și este suficient de mare pentru a se potrivi tuturor membrilor săi.
Atunci când o variabilă este asociată cu unirea, compilatorul alocă memoria luând în considerare dimensiunea celei mai mari memorii, astfel încât dimensiunea unei uniuni este egală cu dimensiunea celui mai mare membru de date. O uniune poate fi definită cu mulți membri, dar numai un membru conține valoarea la orice moment dat.
Adresa este aceeași pentru toți membrii unei uniuni, ceea ce înseamnă că fiecare membru începe cu aceeași valoare compensată. Și modificarea valorii unui membru va afecta valorile altor membri. O uniune poate fi utilizată atunci când doriți să stocați ceva care este unul din mai multe tipuri de date.
angajat al uniunii
numele char [32];
int age;
salariu flotant;
;
Aici, cuvântul cheie "uniune" definește uniunea care este destul de similară cu declarația structurii. Variabila poate să stocheze o valoare de șir care este "numele angajatului", o valoare intregă care este "vârsta angajatului" sau un flotor care reprezintă "salariul angajatului".
1. Cuvânt cheie
Cuvântul cheie "struct" este utilizat pentru a defini o structură, în timp ce cuvântul cheie "union" este utilizat pentru a defini o uniune.
2. Alocarea memoriei
Spațiul de memorie separat este alocat membrilor dintr-o structură, iar membrii au adrese diferite care nu partajează memoria. O uniune, pe de altă parte, împarte același spațiu de memorie pentru toți membrii săi, astfel încât locația de memorie partajată este alocată.
3. Accesul membrilor
O uniune stochează o singură valoare la un moment dat pentru ca toți membrii săi să facă acces la un singur membru la un moment dat. În timp ce mai multe valori pot fi stocate într-o structură, astfel încât orice valoare membru să poată fi accesată și recuperată în orice moment.
4. Dimensiunea
Dimensiunea unei structuri este egală cu suma mărimii tuturor membrilor sau mai multă, în timp ce mărimea unei uniuni este egală cu mărimea celui mai mare membru de mărime.
5. Inițializare
Într-o structură, mai mulți membri pot fi inițializați dintr-o dată, în timp ce într-o uniune, numai primul membru poate fi inițializat cu valoarea tipului său.
5. Valoare
O structură poate stoca diferite valori ale tuturor membrilor și modificarea valorii unui membru nu va avea nici un efect asupra valorilor celorlalți membri. În timp ce o uniune stochează aceeași valoare pentru toți membrii ei și schimbarea valorii unui membru va afecta valoarea altora.
Structura | Uniune |
Cuvântul cheie Struct este utilizat pentru a defini o structură. | Cuvântul cheie al Uniunii este folosit pentru a defini o uniune. |
Membrii nu împart memoria într-o structură. | Membrii împart spațiul de memorie într-o uniune. |
Orice membru poate fi recuperat în orice moment într-o structură. | Numai un membru poate fi accesat la un moment dat într-o uniune. |
Mai mulți membri ai unei structuri pot fi inițializați simultan. | Numai primul membru poate fi inițializat. |
Dimensiunea structurii este egală cu suma mărimii fiecărui membru. | Dimensiunea uniunii este egală cu dimensiunea celui mai mare membru. |
Modificarea valorii unui membru nu va afecta valoarea altui membru. | Schimbarea valorii unui membru va afecta alte valori ale membrilor. |
Stochează diferite valori pentru toți membrii. | Stochează aceeași valoare pentru toți membrii. |