Pole štruktúr vs pole v štruktúre v C
Obaja Pole štruktúr a Pole v rámci štruktúry v C je programovanie kombináciou polí a štruktúr, ale obe sa používajú na rôzne účely.
Pole v rámci štruktúry
Štruktúra je dátový typ v C ktorý umožňuje, aby sa so skupinou súvisiacich premenných zaobchádzalo ako s jednou jednotkou namiesto samostatných entít. Štruktúra môže obsahovať prvky rôznych dátových typov – int, char, float, double atď. Ako člen môže obsahovať aj pole. Takéto pole sa nazýva pole v štruktúre. Pole v rámci štruktúry je členom štruktúry a je možné k nemu pristupovať rovnako, ako pristupujeme k iným prvkom štruktúry.
Nižšie je ukážka programu, ktorý používa koncept poľa v rámci štruktúry. Program zobrazí záznam študenta, ktorý obsahuje číslo rolky , stupňa , a známky zabezpečené v rôznych predmetoch. Známky z rôznych predmetov boli uložené v poli tzv známky . Celý záznam je uložený pod štruktúrou tzv a kandidáta .
Príklad
Nižšie uvedený program demonštruje použitie poľa v rámci štruktúry.
C
// C program to demonstrate the> // use of an array within a structure> #include> // Declaration of the structure candidate> struct> candidate {> > int> roll_no;> > char> grade;> > // Array within the structure> > float> marks[4];> };> // Function to displays the content of> // the structure variables> void> display(> struct> candidate a1)> {> > printf> (> 'Roll number : %d
'> , a1.roll_no);> > printf> (> 'Grade : %c
'> , a1.grade);> > printf> (> 'Marks secured:
'> );> > int> i;> > int> len => sizeof> (a1.marks) /> sizeof> (> float> );> > // Accessing the contents of the> > // array within the structure> > for> (i = 0; i printf('Subject %d : %.2f
', i + 1, a1.marks[i]); } } // Driver Code int main() { // Initialize a structure struct candidate A = { 1, 'A', { 98.5, 77, 89, 78.5 } }; // Function to display structure display(A); return 0; }> |
Výkon
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
Pole štruktúr
Pole je kolekcia údajových položiek rovnakého typu. Každý prvok poľa môže byť int, char, float, double alebo dokonca štruktúra. Videli sme, že štruktúra umožňuje zoskupiť prvky rôznych typov údajov pod jedným názvom. Túto štruktúru potom možno považovať za nový dátový typ sám o sebe. Pole teda môže obsahovať prvky tohto nového dátového typu. Rad štruktúr nachádza svoje uplatnenie pri zoskupovaní záznamov a poskytuje rýchly prístup.
Nižšie je ukážka radu štruktúr. Pole obsahuje podrobnosti o študentoch v triede. Podrobnosti zahŕňajú číslo role, stupeň , a známky , ktoré boli zoskupené pod štruktúrou (záznamom). Pre každého študenta existuje jeden záznam. Takto je možné zostaviť kolekciu súvisiacich premenných pod jednu entitu, aby sa zlepšila prehľadnosť kódu a zvýšila jeho účinnosť.
Príklad
Nižšie uvedený program demonštruje použitie radu štruktúr.
C
// C program to demonstrate the> // usage of an array of structures> #include> // Declaring a structure class> struct> class> {> > int> roll_no;> > char> grade;> > float> marks;> };> // Function to displays the contents> // of the array of structures> void> display(> struct> class> class_record[3])> {> > int> i, len = 3;> > // Display the contents of the array> > // of structures here, each element> > // of the array is a structure of class> > for> (i = 0; i printf('Roll number : %d
', class_record[i].roll_no); printf('Grade : %c
', class_record[i].grade); printf('Average marks : %.2f
', class_record[i].marks); printf('
'); } } // Driver Code int main() { // Initialize of an array of structures struct class class_record[3] = { { 1, 'A', 89.5f }, { 2, 'C', 67.5f }, { 3, 'B', 70.5f } }; // Function Call to display // the class_record display(class_record); return 0; }> |
Výkon
Roll number : 1 Grade : A Average marks : 89.50 Roll number : 2 Grade : C Average marks : 67.50 Roll number : 3 Grade : B Average marks : 70.50
Rozdiel medzi Array of Structures a Array vnútri štruktúr
Nižšie je uvedený tabuľkový rozdiel medzi poľom v rámci štruktúry a poľom štruktúr:
| Parameter | Pole v rámci štruktúry | Pole štruktúr |
|---|---|---|
| Základná myšlienka | Štruktúra obsahuje pole ako svoju členskú premennú. | Pole, v ktorom má každý prvok typovú štruktúru. |
| Syntax | struct class { int ar[10]; } a1, a2, a3; | struct class { int a, b, c; } študentov[10]; |
| Prístup | Prístup je možný pomocou bodkového operátora, rovnako ako pristupujeme k iným prvkom štruktúry. | Dá sa k nim pristupovať indexovaním rovnako, ako pristupujeme k poľu. |
| Syntax prístupových prvkov | štruktúra.pole[index] | pole[index].člen |
| Štruktúra pamäte | Pole v rámci štruktúry bude uložené v sekvenčnej pamäti a výplň štruktúry nezávisí od veľkosti poľa. | Medzi prvkami štruktúry bude kvôli výplni štruktúry nejaký prázdny priestor. |