Matriu d'estructures vs matriu dins d'una estructura en C
Tots dos Matriu d'estructures i Matriu dins d'una estructura en C, la programació és una combinació de matrius i estructures, però ambdues s'utilitzen per a diferents propòsits.
Matriu dins d'una estructura
Una estructura és un tipus de dades en C que permet tractar un grup de variables relacionades com una unitat única en lloc d'entitats separades. Una estructura pot contenir elements de diferents tipus de dades: int, char, float, double, etc. També pot contenir una matriu com a membre. Aquesta matriu s'anomena matriu dins d'una estructura. Una matriu dins d'una estructura és un membre de l'estructura i es pot accedir de la mateixa manera que accedim a altres elements de l'estructura.
A continuació es mostra una demostració d'un programa que utilitza el concepte de matriu dins d'una estructura. El programa mostra l'expedient d'un estudiant que inclou el número de rotlle , grau , i marques assegurat en diferents matèries. Les notes de diverses assignatures s'han emmagatzemat sota una matriu anomenada marques . Tot el registre s'emmagatzema sota una estructura anomenada a candidat .
Exemple
El programa següent mostra l'ús d'una matriu dins d'una estructura.
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; }> |
Sortida
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
Matriu d'estructures
Una matriu és una col·lecció d'elements de dades del mateix tipus. Cada element de la matriu pot ser int, char, float, double o fins i tot una estructura. Hem vist que una estructura permet agrupar elements de diferents tipus de dades sota un sol nom. Aleshores, aquesta estructura es pot considerar com un nou tipus de dades en si mateixa. Per tant, una matriu pot contenir elements d'aquest nou tipus de dades. Una sèrie d'estructures troben les seves aplicacions en agrupar els registres i ofereixen un accés ràpid.
A continuació es mostra una demostració d'una sèrie d'estructures. La matriu conté els detalls dels estudiants d'una classe. Els detalls inclouen el número de rotlle, grau , i marques , que s'han agrupat sota una estructura (registre). Hi ha un registre per a cada alumne. Així és com es pot reunir una col·lecció de variables relacionades sota una única entitat per millorar la claredat del codi i augmentar la seva eficiència.
Exemple
El programa següent mostra l'ús d'una sèrie d'estructures.
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; }> |
Sortida
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
Diferència entre matriu d'estructures i matriu dins d'estructures
A continuació es mostra la diferència tabular entre la matriu dins d'una estructura i la matriu d'estructures:
| Paràmetre | Matriu dins d'una estructura | Matriu d'estructures |
|---|---|---|
| Idea bàsica | Una estructura conté una matriu com a variable membre. | Una matriu en què cada element té una estructura de tipus. |
| Sintaxi | struct class { int ar[10]; } a1, a2, a3; | struct class { int a, b, c; } estudiants[10]; |
| Accés | S'hi pot accedir mitjançant l'operador de punt de la mateixa manera que accedim a altres elements de l'estructura. | Es pot accedir indexant de la mateixa manera que accedim a una matriu. |
| Sintaxi dels elements d'accés | estructura.array[índex] | matriu[índex].membre |
| Estructura de la memòria | La matriu dins de l'estructura s'emmagatzemarà a la memòria seqüencial i el farciment de l'estructura no depèn de la mida de la matriu. | Hi haurà un espai buit entre els elements de l'estructura a causa del farciment de l'estructura. |