Pole struktur vs Pole ve struktuře v C
Oba Pole struktur a Pole v rámci struktury v C je programování kombinací polí a struktur, ale obě se používají k různým účelům.
Pole v rámci struktury
Struktura je datový typ v C což umožňuje, aby se skupinou souvisejících proměnných bylo zacházeno jako s jednou jednotkou namísto samostatných entit. Struktura může obsahovat prvky různých datových typů – int, char, float, double atd. Jako její člen může obsahovat také pole. Takové pole se nazývá pole ve struktuře. Pole ve struktuře je členem struktury a lze k němu přistupovat stejně jako k ostatním prvkům struktury.
Níže je ukázka programu, který používá koncept pole ve struktuře. Program zobrazí záznam studenta obsahující Číslo role , školní známka , a značky zajištěna v různých předmětech. Známky v různých předmětech byly uloženy pod polem tzv značky . Celý záznam je uložen pod strukturou tzv A kandidát .
Příklad
Níže uvedený program ukazuje použití pole ve struktuře.
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ýstup
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
Pole struktur
Pole je kolekce datových položek stejného typu. Každý prvek pole může být int, char, float, double nebo dokonce struktura. Viděli jsme, že struktura umožňuje seskupování prvků různých datových typů pod jedním jménem. Tuto strukturu pak lze považovat za nový datový typ sám o sobě. Pole tedy může obsahovat prvky tohoto nového datového typu. Řada struktur nachází své uplatnění při seskupování záznamů dohromady a poskytuje rychlý přístup.
Níže je ukázka řady struktur. Pole obsahuje podrobnosti o studentech ve třídě. Podrobnosti zahrnují číslo role, stupeň , a známky , které byly seskupeny do struktury (záznamu). Pro každého studenta existuje jeden záznam. Takto lze sestavit kolekci souvisejících proměnných pod jedinou entitou, aby se zlepšila přehlednost kódu a zvýšila jeho účinnost.
Příklad
Níže uvedený program ukazuje použití řady struktur.
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ýstup
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
Rozdíl mezi Array of Structures a Array uvnitř struktur
Níže je uveden tabulkový rozdíl mezi polem ve struktuře a polem struktur:
| Parametr | Pole v rámci struktury | Pole struktur |
|---|---|---|
| Základní myšlenka | Struktura obsahuje pole jako svou členskou proměnnou. | Pole, ve kterém má každý prvek typovou strukturu. |
| Syntax | struct class { int ar[10]; } a1, a2, a3; | struct class { int a, b, c; } studenti[10]; |
| Přístup | Lze k němu přistupovat pomocí operátoru tečka, stejně jako přistupujeme k dalším prvkům struktury. | Lze k němu přistupovat pomocí indexování stejně jako přistupujeme k poli. |
| Syntaxe přístupových prvků | struktura.pole[index] | pole[index].člen |
| Struktura paměti | Pole ve struktuře bude uloženo v sekvenční paměti a vyplnění struktury není závislé na velikosti pole. | Mezi prvky struktury bude nějaký prázdný prostor kvůli vycpávání struktury. |