Istraktura at Unyon
Ang parehong istraktura at unyon ay mga uri ng data na tinukoy ng user sa Wika ng C at pareho ang konsepto, gayunpaman, iba pa rin ang mga ito sa ilang mga paraan tulad ng memory ng paraan na inilalaan sa kanilang mga miyembro. Ang mga ito ay ipinahayag sa katulad na paraan ngunit iba ang kanilang ginagawa. Pinapayagan nila ang user na pagsamahin ang iba't ibang mga uri ng data sa ilalim ng isang pangalan. Habang ang hiwalay na lokasyon ng memorya ay ginagamit para sa bawat miyembro kapag nagpapahayag ng mga variable ng istraktura, ang iba't ibang mga miyembro ng isang unyon variable ay nagbabahagi ng parehong lokasyon ng memorya. Pag-aralan natin ang pagkakaiba sa pagitan ng istraktura at pagkakaisa ay detalye.
Ano ang Istraktura?
Isang istraktura ay isa lamang uri ng data na tinukoy ng gumagamit sa C na nagpapahintulot sa gumagamit na pagsamahin ang mga uri ng data ng iba't ibang mga uri sa isang solong uri sa isang bloke ng memorya. Isang istraktura ay maaaring maglaman ng parehong simple at kumplikadong mga uri ng data na may kaugnayan sa bawat isa, na kung hindi man, ay hindi magkaroon ng kahulugan. Ang bawat miyembro sa loob ng isang istraktura ay nakakakuha ng sarili nitong lokasyon ng memorya upang ma-access at makuha sa anumang oras.
Ang isang istraktura ay ginagamit kapag ang isang pulutong ng mga data ay nangangailangan ng pagpapangkat tulad ng isang direktoryo na nagtatabi ng impormasyon tungkol sa maraming mga miyembro sa isang libro o isang address book na nag-iimbak ng lahat ng impormasyon tungkol sa isang solong contact - pangalan, address, numero ng contact, at iba pa. Ang address ng bawat miyembro ay nasa pataas na pagkakasunud-sunod na nangangahulugang ang memorya ng bawat miyembro ay magsisimula sa iba't ibang mga halaga ng offset. Ang pagbago ng halaga ng isang miyembro ay walang epekto sa iba pang mga miyembro.
Ang keyword na 'struct' ay ginagamit upang tukuyin ang istruktura ng iba't ibang uri ng data sa ilalim ng isang pangalan. Halimbawa, kung nais mong lumikha ng database ng empleyado, kakailanganin mong mag-imbak ng mga detalye ng pangalan, edad, telepono, at suweldo ng empleyado sa ilalim ng isang entidad. Ginagawa ito ng keyword na 'struct', na nagsasabi sa tagatala na ang isang istraktura ay ipinahayag.
struct empleyado {
pangalan ng string;
string edad;
string ng telepono;
suweldo ng suweldo;
} emp1, emp2;
Dito, ang 'empleyado' ay ang pangalan ng istraktura at ang dalawang mga variable na 'emp1' at 'emp2' ay nilikha ng uri ng 'empleyado'. Ang pagsasara ng tirante ay dapat sundan ng isang tuldok (;).
Ang mga miyembro ng isang istraktura ay maaaring ma-access ng dalawang uri ng mga operator:
- Miyembro ng operator
- Structure pointer operator
Ano ang Union?
Ito ay isang espesyal na uri ng data na ginamit sa C na nagpapahintulot sa gumagamit na mag-imbak ng mga uri ng data ng iba't ibang uri sa parehong lokasyon ng memorya. Ang isang unyon ay katulad ng isang istraktura at maaari itong tukuyin sa pamamagitan ng pagpapalit ng keyword na 'struct' kasama ang keyword na 'unyon'. Ang mga miyembro ay nagsasaad ng memorya ng bawat isa sa isang unyon at ito ay sapat na malaki upang magkasya ang lahat ng mga miyembro nito.
Kapag ang isang variable ay nauugnay sa unyon, ang tagatala ay naglalaan ng memorya sa pamamagitan ng pagsasaalang-alang sa laki ng pinakamalaking memorya, kaya ang sukat ng isang unyon ay katumbas ng laki ng pinakamalaking miyembro ng data. Ang isang unyon ay maaaring tinukoy sa maraming mga miyembro, ngunit isa lamang miyembro ang naglalaman ng halaga sa anumang ibinigay na pagkakataon.
Ang address ay pareho para sa lahat ng mga kasapi ng isang unyon na nangangahulugang ang bawat miyembro ay nagsisimula sa parehong halaga ng offset. At ang pagbabago sa halaga ng isang miyembro ay makakaapekto sa mga halaga ng ibang mga miyembro. Ang isang unyon ay maaaring gamitin kapag nais mong mag-imbak ng isang bagay na isa sa maraming uri ng data.
empleyado ng unyon {
pangalan ng char [32];
int edad;
lumutang suweldo;
};
Dito tinutukoy ng keyword na 'unyon' ang unyon na halos kapareho ng deklarasyon ng istraktura. Ang variable ay maaaring mag-imbak ng string value na kung saan ay 'pangalan ng empleyado', isang halaga ng integer na ang 'edad ng empleyado', o isang float na kumakatawan sa 'suweldo ng empleyado'.
Pagkakaiba sa Pagitan ng Istraktura at Pagkakaisa
1. Keyword
Ang keyword na 'struct' ay ginagamit upang tukuyin ang istraktura samantalang ginagamit ang keyword na 'unyon' upang tukuyin ang isang unyon.
2. Memory Allocation
Ang hiwalay na espasyo ng memorya ay inilaan para sa mga miyembro sa loob ng isang istraktura at ang mga miyembro ay may iba't ibang mga address na hindi nagbabahagi ng memorya. Ang isang unyon, sa kabilang banda, ay nagbabahagi ng parehong puwang ng memorya para sa lahat ng mga miyembro nito upang maibahagi ang lokasyon ng memorya.
3. Access ng Miyembro
Ang isang unyon ay nag-iimbak ng isang solong halaga sa isang pagkakataon para sa lahat ng mga miyembro nito na nagbibigay ng access sa isang miyembro lamang sa isang pagkakataon. Habang ang maramihang mga halaga ay maaaring naka-imbak sa isang istraktura upang ang anumang halaga ng miyembro ay maaaring ma-access at nakuha sa anumang oras.
4. Sukat
Ang sukat ng isang istraktura ay katumbas ng kabuuan ng laki ng lahat ng mga miyembro o higit pa, samantalang ang sukat ng isang unyon ay katumbas ng laki ng pinakamalaking miyembro ng laki.
5. Inisyalisasyon
Sa isang istraktura, ang ilang mga miyembro ay maaaring magsimula nang sabay-sabay, habang sa isang unyon, tanging ang unang miyembro ay maaaring magsimula sa halaga ng uri nito.
5. Halaga
Ang isang istraktura ay maaaring mag-imbak ng iba't ibang mga halaga ng lahat ng mga miyembro at ang pagbabago sa halaga ng isang miyembro ay walang epekto sa mga halaga ng ibang mga miyembro. Habang ang isang unyon ay nag-iimbak ng parehong halaga para sa lahat ng mga miyembro nito at pagbabago ng halaga ng isang miyembro ay makakaapekto sa halaga ng iba.
Istraktura kumpara sa Union
Istraktura | Union |
Ginagamit ang struct keyword upang tukuyin ang isang istraktura. | Ang keyword ng unyon ay ginagamit upang tukuyin ang isang unyon. |
Ang mga miyembro ay hindi nagbabahagi ng memorya sa istraktura. | Ibinahagi ng mga miyembro ang espasyo ng memorya sa isang unyon. |
Anumang miyembro ay maaaring makuha sa anumang oras sa isang istraktura. | Isang miyembro lamang ang maaaring ma-access sa isang pagkakataon sa isang unyon. |
Maraming mga miyembro ng isang istraktura ay maaaring magsimula nang sabay-sabay. | Tanging ang unang miyembro ay maaaring magsimula. |
Ang sukat ng istraktura ay katumbas ng kabuuan ng laki ng bawat miyembro. | Sukat ng unyon ay katumbas ng laki ng pinakamalaking miyembro. |
Ang pagbago ng halaga ng isang miyembro ay hindi makakaapekto sa halaga ng isa pa. | Ang pagbabago sa halaga ng isang miyembro ay makakaapekto sa iba pang mga halaga ng miyembro. |
Nagbebenta ng iba't ibang mga halaga para sa lahat ng mga miyembro. | Tindahan ng parehong halaga para sa lahat ng mga miyembro. |
Buod
- Parehong istraktura at unyon ang mga uri ng data na tinukoy ng user sa C na gumagana nang kumilos at may konsepto na pareho ngunit medyo naiiba sa ilang paraan.
- Parehong naglalaman ng mga variable ng iba't ibang mga uri ng data ngunit ginagamit nila ang parehong syntax para sa deklarasyon ng mga variable at pag-access ng mga miyembro. Habang ang isang istraktura ay tinukoy ng keyword na 'struct', ang isang unyon ay tinukoy ng 'unyon' ng keyword.
- Ang bawat miyembro ay nakakakuha ng hiwalay na lokasyon ng memorya sa isang istraktura, samantalang sa isang unyon, ang kabuuang memory space ay katumbas ng pinakamalaking miyembro ng laki. Ang lahat ng mga miyembro ay nagbabahagi ng parehong memory space sa isang unyon.
- Ang sinumang kasapi sa anumang pagkakasunod-sunod ay maaaring ma-access sa isang istraktura, samantalang sa isang unyon, tanging ang variable na maaaring ma-access ang halaga ng kung saan ay kamakailan-lamang na naka-imbak.