Πίνακες εγγραφών |
Το πρόγραμμα του αρχείου 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 |
![]() |
![]() |
![]() |