Πίνακες εγγραφών

Το πρόγραμμα του αρχείου 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

Περιεχόμενα Κεφαλαίου