Array of Structures vs Array innenfor en struktur i C
Både En rekke strukturer og Array i en struktur i C-programmering er en kombinasjon av matriser og strukturer, men begge brukes til å tjene forskjellige formål.
Array i en struktur
En struktur er en datatype i C som gjør at en gruppe relaterte variabler kan behandles som en enkelt enhet i stedet for separate enheter. En struktur kan inneholde elementer av forskjellige datatyper – int, char, float, double, osv. Den kan også inneholde en matrise som medlem. En slik matrise kalles en matrise innenfor en struktur. En matrise i en struktur er et medlem av strukturen og kan nås på samme måte som vi får tilgang til andre elementer i strukturen.
Nedenfor er en demonstrasjon av et program som bruker konseptet med matrisen i en struktur. Programmet viser posten til en student som består av rull nummer , karakter , og merker sikret i ulike fag. Merkene i ulike fag har blitt lagret under en matrise kalt merker . Hele posten er lagret under en struktur kalt en kandidat .
Eksempel
Programmet nedenfor viser bruken av en matrise i en struktur.
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; }> |
Produksjon
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
En rekke strukturer
En matrise er en samling av dataelementer av samme type. Hvert element i arrayet kan være int, char, float, double eller til og med en struktur. Vi har sett at en struktur gjør at elementer av forskjellige datatyper kan grupperes sammen under ett enkelt navn. Denne strukturen kan da betraktes som en ny datatype i seg selv. Så en matrise kan omfatte elementer av denne nye datatypen. En rekke strukturer finner sine applikasjoner ved å gruppere postene sammen og sørger for rask tilgang.
Nedenfor er en demonstrasjon av en rekke strukturer. Matrisen inneholder detaljene til elevene i en klasse. Detaljene inkluderer rullenummer, karakter , og merker , som har blitt gruppert under en struktur (post). Det finnes én post for hver elev. Dette er hvordan en samling av relaterte variabler kan settes sammen under en enkelt enhet for å forbedre klarheten til koden og øke effektiviteten.
Eksempel
Programmet nedenfor viser bruken av en rekke strukturer.
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; }> |
Produksjon
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
Forskjellen mellom Array of Structures og Array in Structures
Nedenfor er den tabellformede forskjellen mellom matrisen i en struktur og matrisen av strukturer:
| Parameter | Array i en struktur | En rekke strukturer |
|---|---|---|
| Grunntanke | En struktur inneholder en matrise som medlemsvariabel. | En matrise der hvert element er av typen struktur. |
| Syntaks | struct class { int ar[10]; } al, a2, a3; | struct class { int a, b, c; } studenter[10]; |
| Adgang | Kan nås ved hjelp av punktoperatoren på samme måte som vi får tilgang til andre elementer i strukturen. | Kan nås ved å indeksere akkurat som vi får tilgang til en matrise. |
| Syntaks for tilgangselementer | structure.array[indeks] | array[indeks].medlem |
| Minnestruktur | Array i strukturen vil bli lagret i sekvensielt minne og strukturutfylling er ikke avhengig av størrelsen på arrayen. | Det vil være noe tomt mellom strukturelementer på grunn av strukturpolstring. |