Το πρόγραμμα του αρχείου STRUCT2.C χρησιμοποιεί την ίδια δήλωση εγγεραφής
όπως και το προηγούμενο πρόγραμμα μόνο που τώρα δηλώνεται ένας πίνακας με
12 εγγραφές. Ο χώρος που απαιτείται στη μνήμη είναι προφανώς 12x(1+2+2)=60
bytes. Όπως είπαμε και προηγούμενα το κάθε πεδίο μιάς εγγραφής έχει το δικό
του όνομα. Επιπλέον και η κάθε εγγραφή, ως στοιχείο ενός πίνακα έχει το δικό
της όνομα. Έτσι έχουμε τα παρακάτω ονόματα
kid[0] : η μηδενική εγγραφή
kid[0].initial : το πρώτο πεδίο της μηδενικής εγγραφής
kid[0].age : το δεύτερο πεδίο -"-
kid[0].grade : το τρίτο πεδίο -"-
Στη θέση του μηδενός θα μπορούσε να είναι οποιαδήποτε τιμή από 0 έως 11. Με
βάση αυτή τη σύμβαση η πρώτη επανάληψη for του προγράμματος δίνει αρχικές
τιμές στα πεδία των εγγραφών. Είναι προφανές οτι τα πεδία initial περιέχουν
τους χαρακτήρες A, B, C, ..., L αντίστοιχα. Στη πράξη η αρχικοποίηση του πίνακα
θα μπορούσε να γίνει μέ διάβασμα των δεδομένων από κάποιο αρχείο. Στη
συνέχεια έχουμε μερικές εξατομικευμένες εκχωρήσεις σε ορισμένα πεδία
εγγραφών.
Η εκχώρηση kids[10] = kids[4] έχει ιδιαίτερη σημασία. Αποτελεί μιά σχετικά
πρόσφατη προσθήκη στη C που επιτρέπει τον χειρισμό μιάς ολόκληρης εγγραφής
σαν μία μεταβλητή γιά την εκχώρηση. Αντιστοιχεί με μιά ακολουθία
εκχωρήσεων της μορφής
kid[10].initial = kid[4].initial
kid[10].age = kid[4].age
kid[10].grade = kid[4].grade
Η τελική επανάληψη εμφανίζει τα περιεχόμενα των εγγραφών αλλάζοντας
σειρά γιά κάθε καινούργια εγγραφή. Η εκτύπωση δίνει αμέσως
A is 16 years old and got a grade of 84
B is 16 years old and got a grade of 84
C is 16 years old and got a grade of 92
D is 17 years old and got a grade of 84
E is 16 years old and got a grade of 57
F is 17 years old and got a grade of 84
G is 16 years old and got a grade of 92
H is 16 years old and got a grade of 84
I is 16 years old and got a grade of 84
J is 16 years old and got a grade of 84
E is 16 years old and got a grade of 57
L is 16 years old and got a grade of 84
|