Matrice de structuri vs matrice dintr-o structură în C
Ambii Matrice de structuri și Matrice în cadrul unei structuri în C programarea este o combinație de matrice și structuri, dar ambele sunt folosite pentru a servi unor scopuri diferite.
Matrice în cadrul unei structuri
O structură este un tip de date în C care permite ca un grup de variabile înrudite să fie tratat ca o singură unitate în loc de entități separate. O structură poate conține elemente de diferite tipuri de date – int, char, float, double etc. Poate conține și o matrice ca membru. O astfel de matrice se numește matrice în cadrul unei structuri. O matrice din cadrul unei structuri este un membru al structurii și poate fi accesată la fel cum accesăm alte elemente ale structurii.
Mai jos este o demonstrație a unui program care utilizează conceptul de matrice în cadrul unei structuri. Programul afișează înregistrarea unui student care cuprinde numărul rolei , nota , și semne asigurate la diverse materii. Notele la diferite subiecte au fost stocate sub o matrice numită semne . Întreaga înregistrare este stocată sub o structură numită A candidat .
Exemplu
Programul de mai jos demonstrează utilizarea unui tablou în cadrul unei structuri.
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; }> |
Ieșire
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
Matrice de structuri
O matrice este o colecție de elemente de date de același tip. Fiecare element al matricei poate fi int, char, float, double sau chiar o structură. Am văzut că o structură permite grupării elementelor de diferite tipuri de date sub un singur nume. Această structură poate fi apoi gândită ca un nou tip de date în sine. Deci, o matrice poate cuprinde elemente ale acestui nou tip de date. O serie de structuri își găsesc aplicațiile în gruparea înregistrărilor și asigură acces rapid.
Mai jos este o demonstrație a unei serii de structuri. Matricea deține detaliile elevilor dintr-o clasă. Detaliile includ numărul rolului, nota , și semne , care au fost grupate sub o structură (înregistrare). Există o înregistrare pentru fiecare student. Acesta este modul în care o colecție de variabile asociate poate fi asamblată sub o singură entitate pentru a spori claritatea codului și a crește eficiența acestuia.
Exemplu
Programul de mai jos demonstrează utilizarea unei serii de structuri.
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; }> |
Ieșire
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
Diferența dintre matrice de structuri și matrice din structuri
Mai jos este diferența tabelară dintre matricea dintr-o structură și matricea de structuri:
| Parametru | Matrice în cadrul unei structuri | Matrice de structuri |
|---|---|---|
| Idee de bază | O structură conține o matrice ca variabilă membru. | O matrice în care fiecare element are o structură de tip. |
| Sintaxă | struct class { int ar[10]; } a1, a2, a3; | struct class { int a, b, c; } elevi[10]; |
| Acces | Poate fi accesat folosind operatorul punct la fel cum accesăm alte elemente ale structurii. | Poate fi accesat prin indexare la fel cum accesăm o matrice. |
| Sintaxa elementelor de acces | structura.matrice[index] | matrice[index].membru |
| Structura memoriei | Matricea din cadrul structurii va fi stocată în memoria secvențială, iar umplutura structurii nu depinde de dimensiunea matricei. | Va exista un spațiu gol între elementele structurii din cauza căptușelii structurii. |