Peamine erinevus - struktuur vs liit C-s
Massiiv on struktureeritud andmed, mida toetab C keel. Massiivi saab kasutada sama tüüpi andmeelementide salvestamiseks. Kui int-märkidena on lause [10]; siis on märgid massiiv, kuhu saab salvestada kümme märki ja kõik need on täisarvud. Mõnikord on vaja salvestada erinevat tüüpi andmeelemente samasse mälukohta. Näiteks võib töötajal olla töötaja ID, nimi, osakond, vanus jne. Nad on erinevat tüüpi andmetega. Seetõttu on vajalik meetod erinevate andmeelementide salvestamiseks ühe üksusena. C-s olevaid struktuure ja liite kasutatakse erinevat tüüpi andmeelementide salvestamiseks ühte mäluasendisse. Struktuur ja liit on sarnased, kuid need eristuvad peamiselt mälu jaotamise tõttu. Struktuurimuutuja salvestamiseks vajalik mälu on kõigi liikmete mälu suuruse liitmine. Liitmuutuja salvestamiseks vajalik mälu on liidu suurima elemendi jaoks vajalik mälu. See on peamine erinevus struktuuri ja liidu vahel C. Selles artiklis käsitletakse struktuuri ja liidu erinevust C.
SISU
1. Ülevaade ja peamine erinevus
2. Mis on struktuur C-s
3. Mis on liit C-s
4. Struktuuri ja liidu sarnasused C-s
5. Kõrvuti võrdlus - struktuur vs liit C tabelina
6. Kokkuvõte
Mis on struktuur C-s?
Struktuur on kasutaja määratud andmetüüp C. See aitab kombineerida erinevat tüüpi andmeüksusi. Struktuur võib kujutada kirjeid. Üliõpilasel võivad olla õpilase ID, õpilase_nimi jne. Selle asemel, et iga muutujat eraldi salvestada, saab kõiki neid erinevaid andmeelemente struktuuri abil ühte kompaktseks muuta. Selle määratlemisel kasutatakse märksõna 'struct'. Struktuuris on kõigil selle liikmetel igal ajal juurdepääs. Järgnev loob tuletatud andmetüübi struct Student.
struct õpilane {
intstudent_id;
char õpilase nimi [20];
};
Ülaltoodud struktuuri korral saab muutujaid deklareerida järgmiselt.
struct Üliõpilane õpilane1, õpilane2, õpilane3;
Struktuuri liikmetele juurdepääsemiseks on kaks meetodit. Seda siis liikmeoperaatori (.) Ja struktuuripoolse operaatori (->) abil. Liikmetele pääseb juurde struktuurimuutuja_nimi abil. liikme nimi. Kui programmeerija soovib pääseda juurde õpilase 2 nimele, saab ta avalduse kirjutada printf (õpilase2.õpilase_nimi);
Vaadake allolevat programmi struktuuriga.
Joonis 01: Struktuuridega C-programm
Eespool nimetatud programmi kohaselt on Tudeng struktuur. See sisaldab õpilase_id ja õpilase nime. Põhiprogrammis deklareeritakse kaks struktuuri tüüpi muutujat. Neid nimetatakse õpilaseks1 ja õpilaseks2. Student1 ID määratakse väärtusega 1, kasutades liikmeoperaatorit kui student1.student_id = 1. Nimi “Ann” on string. Seetõttu kopeeritakse see stringi kopeerimisfunktsiooni strcpy abil õpilase_nimi liikmele. Id ja nimi määratakse õpilasele2 sarnaselt. Lõpuks trükitakse need väärtused liikmeoperaatori abil.
Struktuurimuutuja salvestamiseks vajalik mälumaht on kõigi liikmete mälumahu summa. Student_id sisaldab 4 baiti ja student_name sisaldab 20 baiti (tähemärgi jaoks üks baiti). 24 baiti kokku on struktuuri jaoks vajaliku mälumahu summa.
Mis on liit C-s?
Liit on kasutaja määratletud andmetüüp C-s. See aitab salvestada erinevaid andmetüüpe samasse mälukohta. Raamatul võivad olla sellised omadused nagu raamatu_nimi, hind jne. Selle asemel, et igaühele neist muutujaid luua, saab liiduga liidu abil tihendada kõik erinevad andmetüübid üheks üksuseks. Selle määratlemisel kasutatakse märksõna "liit". Järgnevalt luuakse tuletatud andmeühenduse raamat.
unionBook {
söe nimi [20];
topelt hind;
};
Eespool nimetatud liidu korral saab muutujaid deklareerida järgmiselt.
ametiühinguraamatu raamat1, raamat2;
Liidu liikmetele juurdepääsu saamiseks on kaks meetodit. Seda siis liikmeoperaatori (.) Ja struktuuripoolse operaatori (->) abil. Liikmetele pääseb juurde, kasutades union_variable_name. liikme nimi. Kui programmeerija soovib juurdepääsu raamatu1 nimele, saab ta avalduse kirjutada printf (raamat1.nimi);
Vaadake allpool olevat programmi koos liiduga.
Joonis 02: C-programm liitu kasutades
Ülaltoodud programmi kohaselt on Raamat liit. Book1 on tüüpi liidu muutuja. Nimele ja hinnale määratakse väärtused. Ametiühingus pääseb korraga juurde ainult ühele selle liikmele ja kõigil teistel liikmetel on prügiväärtused. Id väärtust ei prindita korralikult, kuid hinna väärtus prinditakse korralikult.
Joonis 03: Muudetud C-programm koos ühendusega
Eespool nimetatud programmi kohaselt on Book liit. Book1 ja book2 on liit tüüpi muutujad. Esiteks määratakse book1 nime väärtus ja see prinditakse. Seejärel määratakse book2 nime väärtus ja see prinditakse. Kõik liikmed prindivad õigesti, kuna korraga kasutatakse ühte liiget. Liidu salvestamiseks vajalik mälu on liidu suurima elemendi jaoks vajalik mälu. Ülaltoodud programmis on nimemuutujaks 20 baiti. See on suurem kui hind. Niisiis on liidu mälu eraldamine 20 baiti.
Millised on struktuuri ja liidu sarnasused C-s?
- Nii Struktuur kui ka liit C on kasutaja määratletud andmetüübid.
- Nii Structure kui ka Union C-s saab kasutada erinevate andmetüüpide salvestamiseks samasse mälukohta.
Mis vahe on struktuuri ja liidu vahel C-s?
Erinev artikkel keskel enne tabelit
Struktuur vs liit C-s |
|
Struktuur on kasutaja määratud C-tüüpi andmetüüp, mis võimaldab kombineerida erinevat tüüpi andmeid. | Union on kasutaja määratud C-keeles andmetüüp, mis võimaldab kombineerida erinevat tüüpi andmeid. |
Juurdepääsetavus | |
Struktuuris on kõikidele selle liikmetele igal ajal juurdepääs. | Ametiühingus pääseb korraga juurde ainult ühele selle liikmele ja kõik teised liikmed sisaldavad prügiväärtusi. |
Mälu eraldamine | |
Struktuurimuutuja salvestamiseks vajalik mälu on kõigi liikmete mälu suuruse liitmine. | Liitmuutuja salvestamiseks vajalik mälu on liidu suurima elemendi jaoks vajalik mälu. |
Märksõna | |
Struktuuri määratlemiseks kasutatakse märksõna 'struct'. | Ametiühingu määratlemisel kasutatud märksõna on 'liit'. |
Kokkuvõte - struktuur vs liit C-s
Massiivi kasutatakse sama tüüpi andmeelementide salvestamiseks. Mõnikord on vaja salvestada erinevat tüüpi andmeelemente samasse mälukohta. C programmeerimiskeel annab ülesande täitmiseks struktuuri ja liidu. Mõlemad on kasutaja määratletud andmetüübid. Struktuurimuutuja salvestamiseks vajalik mälu on kõigi liikmete mälu suuruse liitmine. Liitmuutuja salvestamiseks vajalik mälu on liidu suurima elemendi jaoks vajalik mälu. See on erinevus struktuuris ja ühenduses C-s.