Οι πίνακες είναι μια από τις πιο συχνά χρησιμοποιούμενες μορφές αποθήκευσης δεδομένων κατά τη διάρκεια της λειτουργίας του προγράμματος. Σας επιτρέπουν να οργανώσετε στοιχεία του ίδιου τύπου σε μια σειρά και να έχετε γρήγορη πρόσβαση σε αυτά κατά ευρετήριο. Πολύ συχνά, όταν αναπτύσσετε εφαρμογές σε ισχυρές και ευέλικτες γλώσσες προγραμματισμού που επιτρέπουν άμεση πρόσβαση στη μνήμη, όπως το C ++, πρέπει να καθορίσετε το μέγεθος του πίνακα.
Απαραίτητη
Μεταγλωττιστής C ++
Οδηγίες
Βήμα 1
Προσδιορίστε το μέγεθος της συστοιχίας κατά το χρόνο μεταγλώττισης υπολογίζοντας τον χρησιμοποιώντας το μέγεθος του τελεστή. Αυτός ο τελεστής επιστρέφει το μέγεθος της μνήμης (σε byte) που καταλαμβάνεται από το όρισμα που του μεταβιβάστηκε. Το όρισμα μπορεί να είναι είτε μια μεταβλητή είτε ένα αναγνωριστικό τύπου. Ο τελεστής sizeof επιστρέφει την πεπερασμένη ποσότητα μνήμης που καταλαμβάνεται από το αντικείμενο στο στάδιο εκτέλεσης του προγράμματος (λαμβάνοντας υπόψη, για παράδειγμα, τις ρυθμίσεις για την ευθυγράμμιση των πεδίων δομής), αλλά ο υπολογισμός του πραγματοποιείται στο στάδιο της σύνταξης.
Βήμα 2
Για να προσδιορίσετε το μέγεθος μιας συστοιχίας χρησιμοποιώντας το μέγεθος του τελεστή, διαιρέστε ολόκληρο το μέγεθός του με το μέγεθος ενός στοιχείου. Για παράδειγμα, εάν έχετε τον ακόλουθο ορισμό ενός πίνακα: int aTemp = {10, 20, 0xFFFF, -1, 16}, τότε το μέγεθός του μπορεί να υπολογιστεί ως: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Βήμα 3
Για μια πιο βολική χρήση αυτής της μεθόδου, είναι λογικό να ορίσετε μια μακροεντολή: #define countof (a) (sizeof (a) / sizeof (a [0])) Σημειώστε ότι δεδομένου ότι η τιμή του τελεστού μεγέθους υπολογίζεται κατά τη μεταγλώττιση ώρα, στο σημείο όπου πραγματοποιείται ο υπολογισμός, οι πληροφορίες σχετικά με τον όγκο του πίνακα και τα στοιχεία του πρέπει να είναι διαθέσιμα ρητά. Με άλλα λόγια, είναι αδύνατο να προσδιοριστούν οι παράμετροι μιας σειράς άγνωστου μεγέθους με την εξωτερική δήλωση.
Βήμα 4
Καθορίστε το μέγεθος του πίνακα κατά την εκτέλεση του προγράμματος, χρησιμοποιώντας το γνωστό σημάδι του τερματισμού του. Μία από τις προσεγγίσεις που επιτρέπει την αποθήκευση και τη μετάδοση δεδομένων με τη μορφή συστοιχιών αορίστου μήκους είναι η εκχώρηση ειδικής τιμής για ένα σημάδι που δείχνει την ολοκλήρωση μιας ακολουθίας δεδομένων. Για παράδειγμα, οι συμβολοσειρές τύπου C ενός byte που είναι συστοιχίες χαρακτήρων πρέπει να τελειώνουν με τιμή 0, οι συστοιχίες συστοιχιών C-string μεταβλητού μήκους είναι μηδενικές και οι συστοιχίες δείκτη πρέπει να τερματίζονται μηδενικά.
Βήμα 5
Για να προσδιορίσετε το μέγεθος μιας συστοιχίας που αντιπροσωπεύεται με αυτόν τον τρόπο, σαρώστε το στοιχείο ανά στοιχείο έως ότου βρείτε το στοιχείο τερματισμού. Αυξήστε τον μηδενισμένο αρχικό μετρητή κατά τη διάρκεια της σάρωσης. Ή, αυξήστε την τιμή του δείκτη σε ένα στοιχείο πίνακα και μετά τη σάρωση, υπολογίστε τη διαφορά μεταξύ των δεικτών στα τρέχοντα και τα πρώτα στοιχεία.
Βήμα 6
Αποκτήστε το μέγεθος μιας δυναμικής συστοιχίας που αντιπροσωπεύεται από ένα πλαίσιο ή ένα αντικείμενο βιβλιοθήκης καλώντας τη μέθοδο του. Οποιεσδήποτε κλάσεις που ενσωματώνουν τη λειτουργικότητα τέτοιων συστοιχιών έχουν μεθόδους για τη λήψη του τρέχοντος αριθμού στοιχείων. Για παράδειγμα, η κλάση προτύπου std:: vector της τυπικής βιβλιοθήκης C ++ έχει μια μέθοδο μεγέθους, η κλάση QVector του πλαισίου Qt έχει μια μέθοδο μέτρησης και η ανάλογη κλάση CArray του MFC έχει μια μέθοδο GetCount.