Array van structuren versus array binnen een structuur in C
Beide Reeks structuren En Array binnen een structuur in C is programmeren een combinatie van arrays en structuren, maar beide worden voor verschillende doeleinden gebruikt.
Array binnen een structuur
Een structuur is een gegevenstype in C waarmee een groep gerelateerde variabelen als een enkele eenheid kan worden behandeld in plaats van als afzonderlijke entiteiten. Een structuur kan elementen van verschillende gegevenstypen bevatten – int, char, float, double, enz. Het kan ook een array als lid bevatten. Zo'n array wordt een array binnen een structuur genoemd. Een array binnen een structuur is lid van de structuur en is toegankelijk op dezelfde manier als andere elementen van de structuur.
Hieronder ziet u een demonstratie van een programma dat het concept van de array binnen een structuur gebruikt. Het programma geeft het record van een student weer, bestaande uit de rolnummer , cijfer , En merken geborgd in diverse vakken. De cijfers in verschillende vakken zijn opgeslagen in een array genaamd merken . Het hele record wordt opgeslagen onder een structuur genaamd A kandidaat .
Voorbeeld
Het onderstaande programma demonstreert het gebruik van een array binnen een structuur.
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; }> |
Uitvoer
Roll number : 1 Grade : A Marks secured: Subject 1 : 98.50 Subject 2 : 77.00 Subject 3 : 89.00 Subject 4 : 78.50
Reeks structuren
Een array is een verzameling gegevensitems van hetzelfde type. Elk element van de array kan int, char, float, double of zelfs een structuur zijn. We hebben gezien dat een structuur het mogelijk maakt dat elementen van verschillende gegevenstypen onder één naam worden gegroepeerd. Deze structuur kan dan worden gezien als een nieuw gegevenstype op zichzelf. Een array kan dus elementen van dit nieuwe gegevenstype bevatten. Een reeks structuren vindt zijn toepassing in het groeperen van de records en zorgt voor snelle toegang.
Hieronder ziet u een demonstratie van een reeks structuren. De array bevat de gegevens van de leerlingen in een klas. De details omvatten de rolnummer, kwaliteit , en merken , die zijn gegroepeerd onder een structuur (record). Er bestaat één record voor elke leerling. Op deze manier kan een verzameling gerelateerde variabelen onder één enkele entiteit worden samengevoegd om de duidelijkheid van de code te vergroten en de efficiëntie ervan te vergroten.
Voorbeeld
Het onderstaande programma demonstreert het gebruik van een reeks structuren.
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; }> |
Uitvoer
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
Verschil tussen array van structuren en array binnen structuren
Hieronder ziet u het verschil in tabelvorm tussen de array binnen een structuur en de array van structuren:
| Parameter | Array binnen een structuur | Reeks structuren |
|---|---|---|
| Basisidee | Een structuur bevat een array als lidvariabele. | Een array waarin elk element van het type structuur is. |
| Syntaxis | struct klasse {int ar[10]; } a1, a2, a3; | struct klasse {int a, b, c; } studenten[10]; |
| Toegang | Kan worden geopend met behulp van de puntoperator, net zoals we toegang krijgen tot andere elementen van de structuur. | Kan worden benaderd door indexering, net zoals we toegang krijgen tot een array. |
| Toegang tot de syntaxis van elementen | structuur.array[index] | array[index].lid |
| Geheugenstructuur | Arrays binnen de structuur worden opgeslagen in sequentieel geheugen en structuuropvulling is niet afhankelijk van de grootte van de array. | Er zal wat lege ruimte tussen structuurelementen zijn als gevolg van structuuropvulling. |