Pagkakaiba sa pagitan ng Structure at Union sa C

Talaan ng mga Nilalaman:

Pagkakaiba sa pagitan ng Structure at Union sa C
Pagkakaiba sa pagitan ng Structure at Union sa C

Video: Pagkakaiba sa pagitan ng Structure at Union sa C

Video: Pagkakaiba sa pagitan ng Structure at Union sa C
Video: On the traces of an Ancient Civilization? ๐Ÿ—ฟ What if we have been mistaken on our past? 2024, Hulyo
Anonim

Mahalagang Pagkakaiba โ€“ Structure vs Union sa C

Ang array ay isang data na nakaayos na sinusuportahan ng C language. Maaaring gumamit ng array upang mag-imbak ng mga elemento ng data ng parehong uri. Kung mayroong isang pahayag bilang int marks [10]; pagkatapos ang mga marka ay isang array na maaaring mag-imbak ng sampung marka at lahat ng mga ito ay mga integer. Minsan ito ay kinakailangan mag-imbak ng mga elemento ng data ng iba't ibang uri sa parehong lokasyon ng memorya. Halimbawa, ang isang empleyado ay maaaring magkaroon ng isang empleyado ID, pangalan, departamento, edad atbp. Sila ay may iba't ibang uri ng data. Samakatuwid, kinakailangang magkaroon ng paraan upang mag-imbak ng iba't ibang elemento ng data bilang isang yunit. Ang mga Structure at Union sa C ay ginagamit para sa pag-imbak ng mga elemento ng data ng iba't ibang uri sa parehong lokasyon ng memorya. Ang isang istraktura at isang unyon ay magkatulad ngunit sila ay pangunahing nag-iiba dahil sa paglalaan ng memorya. Ang memorya na kinakailangan upang mag-imbak ng isang variable ng istraktura ay ang kabuuan ng laki ng memorya ng lahat ng mga miyembro. Ang memorya na kinakailangan upang mag-imbak ng isang variable ng unyon ay ang memorya na kinakailangan para sa pinakamalaking elemento sa unyon. Iyan ang pangunahing pagkakaiba sa pagitan ng istraktura at unyon sa C. Tinatalakay ng artikulong ito ang pagkakaiba sa pagitan ng istraktura at unyon sa C.

Ano ang Structure sa C?

Ang isang istraktura ay isang uri ng data na tinukoy ng gumagamit sa C. Nakakatulong ito upang pagsamahin ang mga item ng data ng iba't ibang uri. Ang isang istraktura ay maaaring kumatawan sa mga talaan. Ang isang mag-aaral ay maaaring magkaroon ng student_id, student_name atbp. Sa halip na iimbak ang bawat variable nang hiwalay, ang lahat ng iba't ibang data item na ito ay maaaring maging compact sa isang unit gamit ang isang istraktura. Ito ay tinukoy gamit ang keyword na 'struct'. Sa isang istraktura, maa-access ang lahat ng miyembro nito anumang oras. Ang sumusunod ay lumilikha ng hinangong uri ng data struct Student.

struct Mag-aaral {

intstudent_id;

char student_name[20];

};

Para sa istruktura sa itaas, maaaring ideklara ang mga variable tulad ng sumusunod.

struct Mag-aaral na mag-aaral1, mag-aaral2, mag-aaral3;

May dalawang paraan para ma-access ang mga miyembro ng istraktura. Iyon ay sa pamamagitan ng paggamit ng member operator (.) at structure pointer operator (->). Maaaring ma-access ang mga miyembro gamit ang structure_variable_name. pangalan ng Miyembro. Kung gustong i-access ng programmer ang pangalan ng mag-aaral 2, maaari niyang isulat ang pahayag bilang printf(pangalan_ng_mag-aaral);

Sumangguni sa ibabang programa na may istraktura.

Pagkakaiba sa pagitan ng Structure at Union sa C
Pagkakaiba sa pagitan ng Structure at Union sa C

Figure 01: C program na may mga istruktura

Ayon sa programa sa itaas, ang Mag-aaral ay isang istraktura. Naglalaman ito ng student_id at student_name. Dalawang variable ng uri ng istraktura ang idineklara sa pangunahing programa. Tinatawag silang mag-aaral1 at mag-aaral2. Ang student1's id ay itinalaga na may value 1 gamit ang member operator bilang student1.student_id=1. Ang pangalang "Ann" ay isang string. Samakatuwid, ito ay kinopya sa miyembro ng student_name gamit ang string copy function na strcpy. Ang id at pangalan ay itinalaga sa student2 sa katulad na paraan. Panghuli, ang mga halagang iyon ay naka-print gamit ang operator ng miyembro.

Ang dami ng memorya na kailangan para mag-imbak ng structure variable ay ang kabuuan ng laki ng memory ng lahat ng miyembro. Ang student_id ay naglalaman ng 4 na byte at ang student_name ay naglalaman ng 20 byte (isang byte bawat isa para sa isang character). Ang kabuuang 24 byte ay ang kabuuan ng laki ng memorya na kinakailangan ng istraktura.

Ano ang Union sa C?

Ang unyon ay isang uri ng data na tinukoy ng user sa C. Nakakatulong itong mag-imbak ng iba't ibang uri ng data sa parehong lokasyon ng memorya. Ang isang Aklat ay maaaring magkaroon ng mga katangian tulad ng book_name, presyo atbp. Sa halip na lumikha ng mga variable para sa bawat isa sa kanila, maaaring gamitin ang isang unyon upang i-compact ang lahat ng iba't ibang uri ng data sa isang unit gamit ang isang unyon. Tinukoy ito gamit ang keyword na 'union'. Lumilikha ang sumusunod ng nagmula na data union Book.

unionBook{

char name[20];

dobleng presyo;

};

Para sa unyon sa itaas, maaaring ideklara ang mga variable bilang sumusunod.

union Book book1, book2;

May dalawang paraan para ma-access ang mga miyembro ng unyon. Iyon ay sa pamamagitan ng paggamit ng member operator (.) at structure pointer operator (->). Maaaring ma-access ang mga miyembro gamit ang union_variable_name. pangalan ng Miyembro. Kung gustong i-access ng programmer ang pangalan ng book1, maaari niyang isulat ang statement bilang printf(book1.name);

I-refer ang programa sa ibaba na may unyon.

Pagkakaiba sa pagitan ng Structure at Union sa C_Figure 02
Pagkakaiba sa pagitan ng Structure at Union sa C_Figure 02

Figure 02: C program gamit ang unyon

Ayon sa programa sa itaas, ang Aklat ay isang unyon. Ang book1 ay isang variable ng uri ng unyon. Ang pangalan at presyo ay itinalagang mga halaga. Sa unyon, isa lamang sa mga miyembro nito ang maaaring ma-access sa isang pagkakataon at lahat ng iba pang miyembro ay magkakaroon ng mga halaga ng basura. Ang halaga ng id ay hindi nai-print nang maayos ngunit ang halaga ng presyo ay nai-print nang maayos.

Pangunahing Pagkakaiba sa pagitan ng Structure at Union sa C
Pangunahing Pagkakaiba sa pagitan ng Structure at Union sa C

Figure 03: Binagong C program na may unyon

Ayon sa programa sa itaas, ang Book ay isang unyon. Ang book1 at book2 ay mga variable na uri ng unyon. Una, ang halaga para sa pangalan ng book1 ay itinalaga at ito ay naka-print. Pagkatapos ay itinalaga ang halaga para sa pangalan ng book2 at ito ay naka-print. Ang lahat ng mga miyembro ay nagpi-print nang tama dahil ang isang miyembro ay ginagamit sa isang pagkakataon. Ang memorya na kinakailangan upang mag-imbak ng isang unyon ay ang memorya na kinakailangan para sa pinakamalaking elemento ng unyon. Sa programa sa itaas, ang variable ng pangalan ay 20 bytes. Ito ay mas malaki kaysa sa presyo. Kaya, ang memory allocation para sa unyon ay 20 bytes.

Ano ang Pagkakatulad sa pagitan ng Structure at Union sa C?

  • Ang Structure at Union sa C ay mga uri ng data na tinukoy ng user.
  • Ang Structure at Union sa C ay maaaring gamitin upang mag-imbak ng iba't ibang uri ng data sa parehong lokasyon ng memorya.

Ano ang Pagkakaiba sa pagitan ng Structure at Union sa C?

Structure vs Union sa C

Ang Structure ay isang datatype na tinukoy ng user sa C language na nagbibigay-daan sa pagsasama-sama ng data ng iba't ibang uri nang magkasama. Ang Union ay isang datatype na tinukoy ng user sa C language na nagbibigay-daan sa pagsasama-sama ng data ng iba't ibang uri nang magkasama.
Accessibility
Sa isang istraktura, maa-access ang lahat ng miyembro nito anumang oras. Sa isang unyon, isa lang sa mga miyembro nito ang maa-access sa isang pagkakataon at lahat ng iba pang miyembro ay maglalaman ng mga halaga ng basura.
Memory Allocation
Ang memorya na kailangan para mag-imbak ng structure variable ay ang kabuuan ng laki ng memorya ng lahat ng miyembro. Ang memorya na kinakailangan upang mag-imbak ng isang variable ng unyon ay ang memorya na kinakailangan para sa pinakamalaking elemento sa unyon.
Keyword
Ang keyword na ginamit upang tukuyin ang isang istraktura ay 'struct'. Ang keyword na ginamit upang tukuyin ang isang unyon ay โ€˜unionโ€™.

Buod โ€“ Structure vs Union sa C

Ginagamit ang array upang iimbak ang mga elemento ng data ng parehong uri. Minsan kinakailangan na mag-imbak ng mga elemento ng data ng iba't ibang uri sa parehong lokasyon ng memorya. Ang C programming language ay nagbibigay ng istraktura at unyon upang magawa ang gawaing ito. Parehong mga uri ng data na tinukoy ng gumagamit. Ang memorya na kinakailangan upang mag-imbak ng isang variable ng istraktura ay ang kabuuan ng laki ng memorya ng lahat ng mga miyembro. Ang memorya na kinakailangan upang mag-imbak ng isang variable ng unyon ay ang memorya na kinakailangan para sa pinakamalaking elemento sa unyon. Ito ang pagkakaiba sa pagitan ng istraktura at unyon sa C.

Inirerekumendang: