Kas ir struktūra?
Struktūra ir lietotāja definēts datu tips C programmēšanas valodā, kas apvieno loģiski saistītus dažādu datu tipu datu objektus.
Visi struktūras elementi tiek glabāti blakus esošās atmiņas vietās. Struktūras tipa mainīgais vienā nosaukumā var uzglabāt vairākus datu vienumus ar dažādiem datu tipiem.
Šajā apmācībā jūs uzzināsiet:
- Kas ir struktūra?
- Kas ir Savienība
- Struktūras deklarēšanas sintakse
- Struktūras piemērs C programmēšanā
- Savienības deklarēšanas sintakse
- Savienības piemērs C programmēšanā
- Struktūra Vs. Savienība
- Struktūras priekšrocības
- Savienības priekšrocības
- Struktūras trūkumi
- Savienības trūkumi
Kas ir Savienība
Savienība ir lietotāja definēts datu tips, tāpat kā struktūra. Union apvieno dažāda veida un izmēra objektus. Savienojuma mainīgais piešķir atmiņas vietu, kas vienāda ar vietu lielākā savienojuma mainīgā izvietošanai. Tas ļauj dažāda veida objektiem koplietot vienu un to pašu atrašanās vietu.
Struktūras deklarēšanas sintakse
struct [name of the structure]{type member1;type member2;type member3;};
Struktūra tiek deklarēta, izmantojot atslēgas vārdu un struktūras nosaukumu. Numurs 1, numurs 2, numurs 3 ir atsevišķi struktūras locekļi. Ķermeņa daļa tiek pārtraukta ar semikolu (;).
Struktūras piemērs C programmēšanā
#includestruct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}
Iepriekš minētajā programmā tiek izveidota struktūra, ko sauc par studentu. Šai struktūrai ir trīs datu dalībnieki: 1) nosaukums (virkne), 2) roll_no (vesels skaitlis) un 3) atzīmes (float).
Pēc tam tiek izveidots struktūras mainīgais sdt, lai saglabātu studentu informāciju un parādītu to datora ekrānā.
Izeja:
Ievadiet šādu informāciju:
Ievadiet studenta vārdu: Džeimss
Ievadiet studenta saraksta numuru: 21
Ievadiet studentu atzīmes: 67
Ievadītā informācija ir:
Studenta vārds: Jānis
Studentu saraksta numurs: 21
Studentu atzīmes: 67,0
Savienības deklarēšanas sintakse
union [name of union]{type member1;type member2;type member3;};
Savienība tiek deklarēta, izmantojot savienības atslēgvārdu un savienības nosaukumu. Numurs 1, numurs 2, numurs 3 ir atsevišķi savienības biedri. Ķermeņa daļa tiek pārtraukta ar semikolu (;).
Savienības piemērs C programmēšanā
#includeunion item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}
Izeja:
1101109601
20.199892
a
Iepriekš minētajā programmā jūs varat redzēt, ka x un y vērtības tiek sabojātas. Tikai mainīgais ch izdrukā gaidīto rezultātu. Tas ir tāpēc, ka savienojumā atmiņas vieta tiek koplietota starp visiem dalībnieku datu tipiem.
Tāpēc vienīgais datu dalībnieks, kura vērtība pašlaik tiek saglabāta, aizņems atmiņas vietu. Beidzot mainīgā lieluma ch vērtība tika saglabāta, tāpēc tiek zaudēta pārējo mainīgo vērtība.
Struktūra Vs. Savienība
Šeit ir svarīga atšķirība starp struktūru un savienību:
Struktūra | Savienība |
Struktūras definēšanai varat izmantot strukturālo atslēgvārdu. | Savienības definēšanai varat izmantot savienības atslēgvārdu. |
Katram struktūras dalībniekam tiek piešķirta unikāla atmiņas vieta. | Savienībā atmiņas vietu koplieto visi datu dalībnieki. |
Viena datu dalībnieka vērtības maiņa neietekmēs citus datu dalībniekus struktūrā. | Mainot viena datu dalībnieka vērtību, tiks mainīta arī citu savienībā esošo datu dalībnieku vērtība. |
Tas ļauj inicializēt vairākus dalībniekus vienlaikus. | Tas ļauj jums inicializēt tikai pirmo arodbiedrības biedru. |
Struktūras kopējais lielums ir katra datu dalībnieka lieluma summa. | Savienības kopējais lielums ir lielākā datu dalībnieka lielums. |
To galvenokārt izmanto dažādu veidu datu glabāšanai. | To galvenokārt izmanto, lai saglabātu vienu no daudzajiem pieejamajiem datu tipiem. |
Tas aizņem vietu katram loceklim, kas ierakstīts iekšējos parametros. | Tas aizņem vietu dalībniekam, kuram ir vislielākais izmērs, kas ierakstīts iekšējos parametros. |
Vienlaikus var izgūt jebkuru dalībnieku. | Savienībā vienlaikus var piekļūt vienam biedram. |
Tas atbalsta elastīgu masīvu. | Tas neatbalsta elastīgu masīvu. |
Struktūras priekšrocības
Šeit ir plusi / priekšrocības struktūras izmantošanai:
- Struktūras vienā un tajā pašā vietā apkopo vairākus datus par vienu un to pašu priekšmetu.
- Tas ir noderīgi, ja vēlaties apkopot līdzīgu datu tipu un parametru datus, piemēram, vārdu, uzvārdu utt.
- To ir ļoti viegli uzturēt, jo mēs varam attēlot visu ierakstu, izmantojot vienu vārdu.
- Struktūrā mēs varam nodot pilnu ierakstu komplektu jebkurai funkcijai, izmantojot vienu parametru.
- Varat izmantot struktūru masīvu, lai uzglabātu vairāk ierakstu ar līdzīgiem tipiem.
Savienības priekšrocības
Šeit ir plusi / ieguvumi, izmantojot savienību:
- Tas aizņem mazāk atmiņas, salīdzinot ar struktūru.
- Lietojot savienojumu, var tieši piekļūt tikai pēdējam mainīgajam.
- Savienojums tiek izmantots, ja diviem vai vairākiem datu dalībniekiem ir jāizmanto viena un tā pati atmiņas vieta.
- Tas ļauj jums glabāt tikai viena datu dalībnieka datus.
- Tam piešķirtā vieta ir vienāda ar maksimālo datu dalībnieka lielumu.
Struktūras trūkumi
Šeit ir mīnusi / trūkumi struktūras izmantošanai:
- Ja IT projekta sarežģītība pārsniedz robežu, to kļūst grūti pārvaldīt.
- Vienas koda datu struktūras maiņa prasa izmaiņas daudzās citās vietās. Tāpēc izmaiņas kļūst grūti izsekojamas.
- Struktūra ir lēnāka, jo tai ir nepieciešama atmiņas vieta visiem datiem.
- Struktūrā jūs varat paņemt jebkuru biedru vienlaikus, savukārt savienībā varat piekļūt vienam loceklim vienlaikus.
- Struktūra aizņem vietu katram loceklim, kas ierakstīts iekšējos parametros, savukārt savienība aizņem vietu dalībniekam, kura iekšējos parametros ir ierakstīts vislielākais izmērs.
- Struktūra atbalsta elastīgu masīvu. Savienība neatbalsta elastīgu klāstu.
Savienības trūkumi
Šeit ir mīnusi / trūkumi savienojuma izmantošanā:
- Vienlaikus var izmantot tikai vienu arodbiedrības biedru.
- Visus savienojuma mainīgos nevar inicializēt vai izmantot ar dažādām vērtībām vienlaikus.
- Savienība piešķir vienu kopīgu atmiņas vietu visiem tās locekļiem.
GALVENĀS ATŠĶIRĪBAS:
- Katram struktūras dalībniekam tiek piešķirta unikāla atmiņas vieta, savukārt savienojumā atmiņas vieta tiek koplietota visiem datu dalībniekiem.
- Viena datu dalībnieka vērtības maiņa struktūrā neietekmēs citus datu dalībniekus, savukārt, mainot viena datu dalībnieka vērtību, mainīsies citu savienībā esošo datu dalībnieku vērtība.
- Struktūra galvenokārt tiek izmantota dažādu veidu datu glabāšanai, savukārt savienojums galvenokārt tiek izmantots viena no daudzajiem datu tipiem glabāšanai.
- Struktūrā jūs varat paņemt jebkuru locekli vienlaikus, no otras puses, savienībā, jūs varat piekļūt vienam loceklim vienlaikus.
- Struktūra atbalsta elastīgu masīvu, bet savienība neatbalsta elastīgu masīvu.