Pri práci s veľkým súborom súvisiacich údajov a rôznych typov údajov je rozhodujúca ich efektívna organizácia a správa. V programovaní C poskytuje kombinácia polí a štruktúr, t. j. pole štruktúr, výkonný nástroj na ich správu. V tomto článku diskutujeme o koncepte Array of Structures v C.
reťazec do dátumu
Čo je Array?
Pole je homogénna kolekcia prvkov uložených v mieste spojitej pamäte. Veľkosť poľa je pevná a k prvkom môžeme pristupovať náhodne pomocou ich indexu.
Vyhlásenie Array
array_type array_name [size];>
Čo je Štruktúra?
Štruktúra je jedným z užívateľom definovaných dátových typov v C, ktorý môže obsahovať prvky rôznych typov ako svoje členy.
Vyhlásenie o štruktúre v C
struct structure_name{ memberType memberName; ... ... };> Pole štruktúr
Pole, ktorého prvky sú typu štruktúra, sa nazýva pole štruktúry. Vo všeobecnosti je užitočný, keď v našom programe potrebujeme viacero štruktúrnych premenných.
Need for Array of Structures
Predpokladajme, že máme 50 zamestnancov a potrebujeme uložiť údaje 50 zamestnancov. Na to potrebujeme definovať 50 premenných typu struct Employee a do nich uložiť dáta. Deklarovanie a manipulácia s 50 premennými však nie je ľahká úloha. Predstavme si väčší scenár, napríklad 1000 zamestnancov.
Ak teda premennú deklarujeme týmto spôsobom, nie je možné to zvládnuť.
struct Employee emp1, emp2, emp3, .. . ... . .. ... emp1000;>
Na to môžeme definovať pole, ktorého dátový typ bude struct Employee, takže bude ľahko spravovateľný.
Declaration of Array of Structures
struct structure_name array_name [number_of_elements];>
Inicializácia poľa štruktúr
Pole štruktúr môžeme inicializovať nasledujúcimi spôsobmi:
struct structure_name array_name [number_of_elements] = { {element1_value1, element1_value2, ....}, {element2_value1, element2_value2, ....}, ...... ...... };> Rovnakú inicializáciu je možné vykonať aj takto:
struct structure_name array_name [number_of_elements] = { element1_value1, element1_value2 ...., element2_value1, element2_value2 ..... };> Kompilátory GNU C podporujú určenú inicializáciu pre štruktúry, takže ju môžeme použiť aj pri inicializácii poľa štruktúr.
struct structure_name array_name [number_of_elements] = { {.element3 = value, .element1 = value, ....}, {.element2 = value, .elementN = value, ....}, ...... ...... };> Príklad poľa štruktúry v C
C
vypnutie režimu vývojára
// C program to demonstrate the array of structures> #include> > // structure template> struct> Employee {> >char> Name[20];> >int> employeeID;> >int> WeekAttendence[7];> };> > // driver code> int> main()> {> >// defining array of structure of type Employee> >struct> Employee emp[5];> > >// adding data> >for> (>int> i = 0; i <5; i++) {> >emp[i].employeeID = i;> >strcpy>(emp[i].Name,>'Amit'>);> >int> week;> >for> (week = 0; week <7; week++) {> >int> attendence;> >emp[i].WeekAttendence[week] = week;> >}> >}> >printf>(>'
'>);> > >// printing data> >for> (>int> i = 0; i <5; i++) {> >printf>(>'Emplyee ID: %d - Employee Name: %s
'>,> >emp[i].employeeID, emp[i].Name);> >printf>(>'Attendence
'>);> >int> week;> >for> (week = 0; week <7; week++) {> >printf>(>'%d '>, emp[i].WeekAttendence[week]);> >}> >printf>(>'
'>);> >}> > >return> 0;> }> |
>
rozloženie mriežky
>
Výkon
Emplyee ID: 0 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 1 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 2 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 3 - Employee Name: Amit Attendence 0 1 2 3 4 5 6 Emplyee ID: 4 - Employee Name: Amit Attendence 0 1 2 3 4 5 6>