Galvenā atšķirība - struktūra pret savienību C
Masīvs ir C valodas atbalstīti strukturēti dati. Masīvu var izmantot tāda paša veida datu elementu glabāšanai. Ja ir paziņojums kā int atzīmes [10]; tad atzīmes ir masīvs, kurā var saglabāt desmit atzīmes, un tās visas ir veseli skaitļi. Dažreiz ir nepieciešams uzglabāt dažādu veidu datu elementus vienā atmiņas vietā. Piemēram, darbiniekam var būt darbinieka ID, vārds, nodaļa, vecums utt. Tie ir dažāda veida dati. Tāpēc ir nepieciešama metode dažādu datu elementu glabāšanai kā viena vienība. Struktūras un savienības C tiek izmantotas dažādu veidu datu elementu glabāšanai vienā atmiņas vietā. Struktūra un savienība ir līdzīgas, taču tās galvenokārt atšķiras atmiņas piešķiršanas dēļ. Struktūras mainīgā saglabāšanai nepieciešamā atmiņa ir visu dalībnieku atmiņas lieluma summēšana. Atmiņa, kas nepieciešama, lai saglabātu savienības mainīgo, ir atmiņa, kas nepieciešama lielākajam savienojuma elementam. Tā ir galvenā atšķirība starp struktūru un savienību valodā C. Šajā rakstā ir apskatīta atšķirība starp struktūru un savienību valodā C.
Kas ir C struktūra?
Struktūra ir lietotāja definēts C datu tips. Tas palīdz apvienot dažādu veidu datu vienumus. Struktūra var attēlot ierakstus. Studentam var būt studenta_id, studenta_nosaukums utt. Tā vietā, lai saglabātu katru mainīgo atsevišķi, visus šos dažādos datu vienumus var kompakti apvienot vienā vienībā, izmantojot struktūru. Tas tiek definēts, izmantojot atslēgvārdu “struct”. Struktūrā visiem tās dalībniekiem var piekļūt jebkurā laikā. Tālāk tiek izveidota atvasināta datu tipa struktūra Student.
struct Students {
intstudent_id;
char student_name[20];
};
Iepriekšminētajai struktūrai mainīgos var deklarēt šādi.
struct Student students1, students2, students3;
Ir divas metodes, kā piekļūt struktūras dalībniekiem. Tas ir, izmantojot dalībnieku operatoru (.) un struktūras rādītāja operatoru (->). Dalībniekiem var piekļūt, izmantojot struktūras_mainīgā_nosaukums. dalībnieka vārds. Ja programmētājs vēlas piekļūt studenta 2 vārdam, viņš var rakstīt paziņojumu kā printf(studenta2.studenta_nosaukums);
Skatiet tālāk redzamo programmu ar struktūru.
Attēls 01: C programma ar struktūrām
Saskaņā ar iepriekš minēto programmu Students ir struktūra. Tas satur student_id un student_name. Galvenajā programmā ir deklarēti divi struktūras tipa mainīgie. Tos sauc students1 un students2. Student1 ID tiek piešķirts ar vērtību 1, izmantojot dalībnieka operatoru kā student1.student_id=1. Vārds “Ann” ir virkne. Tāpēc tas tiek kopēts studenta_nosaukumā, izmantojot virknes kopēšanas funkciju strcpy. ID un nosaukums studentam2 tiek piešķirts līdzīgā veidā. Visbeidzot, šīs vērtības tiek izdrukātas, izmantojot dalībnieka operatoru.
Atmiņas apjoms, kas nepieciešams, lai saglabātu struktūras mainīgo, ir visu dalībnieku atmiņas lieluma summa. Student_id satur 4 baitus un studenta_nosaukums satur 20 baitus (katrs viens baits rakstzīmei). Kopējie 24 baiti ir struktūrai nepieciešamā atmiņas lieluma summa.
Kas ir Savienība C?
Savienība ir lietotāja definēts C datu tips. Tas palīdz vienā atmiņas vietā saglabāt dažādus datu tipus. Grāmatai var būt tādi rekvizīti kā grāmatas_nosaukums, cena utt. Tā vietā, lai izveidotu mainīgos katram no tiem, var izmantot savienību, lai sablīvētu visus dažādos datu tipus vienā vienībā, izmantojot savienību. Tas tiek definēts, izmantojot atslēgvārdu “apvienība”. Tālāk tiek izveidota atvasināta datu savienības grāmata.
arodbiedrības grāmata{
raksta nosaukums[20];
dubultā cena;
};
Iepriekšminētajai savienībai mainīgos var deklarēt šādi.
savienība Grāmata1, grāmata2;
Ir divas metodes, kā piekļūt arodbiedrības biedriem. Tas ir, izmantojot dalībnieku operatoru (.) un struktūras rādītāja operatoru (->). Dalībniekiem var piekļūt, izmantojot savienības_mainīgā_nosaukums. dalībnieka vārds. Ja programmētājs vēlas piekļūt grāmatas1 nosaukumam, viņš var rakstīt paziņojumu kā printf(book1.name);
Izlasiet tālāk norādīto programmu ar arodbiedrību.
Attēls 02: C programma, izmantojot savienojumu
Saskaņā ar iepriekš minēto programmu Grāmata ir savienība. Grāmata1 ir savienības tipa mainīgais. Nosaukumam un cenai ir piešķirtas vērtības. Savienībā vienlaikus var piekļūt tikai vienam no tās biedriem, un visiem pārējiem biedriem būs atkritumu vērtības. ID vērtība netiek drukāta pareizi, bet cenas vērtība tiek drukāta pareizi.
Attēls 03: Modificēta C programma ar savienību
Saskaņā ar iepriekš minēto programmu Grāmata ir savienība. Grāmata1 un grāmata2 ir savienības tipa mainīgie. Vispirms tiek piešķirta 1. grāmatas nosaukuma vērtība un tā tiek izdrukāta. Pēc tam tiek piešķirta book2 nosaukuma vērtība un tā tiek izdrukāta. Visi dalībnieki drukā pareizi, jo vienlaikus tiek izmantots viens dalībnieks. Atmiņa, kas nepieciešama savienības glabāšanai, ir atmiņa, kas nepieciešama lielākajam savienības elementam. Iepriekš minētajā programmā nosaukuma mainīgais ir 20 baiti. Tas ir lielāks par cenu. Tātad savienojuma atmiņas sadalījums ir 20 baiti.
Kādas ir līdzības starp struktūru un savienību C?
- Gan struktūra, gan Savienība C ir lietotāja definēti datu tipi.
- Gan Structure un Union C var izmantot dažādu datu tipu glabāšanai vienā atmiņas vietā.
Kāda ir atšķirība starp struktūru un savienību C?
Struktūra pret savienību C |
|
Struktūra ir lietotāja definēts datu tips C valodā, kas ļauj apvienot dažādu veidu datus. | Union ir lietotāja definēts datu tips C valodā, kas ļauj apvienot dažādu veidu datus. |
Pieejamība | |
Struktūrā visiem tās dalībniekiem var piekļūt jebkurā laikā. | Savienībā vienlaikus var piekļūt tikai vienam tās biedram, un visos pārējos biedros būs netīrās vērtības. |
Atmiņas piešķiršana | |
Atmiņa, kas nepieciešama, lai saglabātu struktūras mainīgo, ir visu dalībnieku atmiņas lieluma summēšana. | Atmiņa, kas nepieciešama, lai saglabātu savienojuma mainīgo, ir atmiņa, kas nepieciešama lielākajam savienojuma elementam. |
Atslēgvārds | |
Struktūras definēšanai izmantotais atslēgvārds ir “struct”. | Arodbiedrības definēšanai izmantotais atslēgvārds ir “arodbiedrība”. |
Kopsavilkums - struktūra pret savienību C
Masīvs tiek izmantots, lai saglabātu viena veida datu elementus. Dažkārt ir nepieciešams glabāt dažāda veida datu elementus vienā atmiņas vietā. C programmēšanas valoda nodrošina struktūru un savienību šī uzdevuma veikšanai. Abi ir lietotāja definēti datu tipi. Struktūras mainīgā saglabāšanai nepieciešamā atmiņa ir visu dalībnieku atmiņas lieluma summēšana. Atmiņa, kas nepieciešama, lai saglabātu savienības mainīgo, ir atmiņa, kas nepieciešama lielākajam savienojuma elementam. Šī ir atšķirība starp struktūru un savienību valodā C.