Οι πίνακες είναι μια από τις απλούστερες μορφές αποθήκευσης δομημένων δεδομένων. Δεδομένου ότι οι αδιαίρετες περιοχές μνήμης κατανέμονται για την αποθήκευση μονοδιάστατων συστοιχιών και οι περισσότερες γλώσσες προγραμματισμού έχουν συντακτικές κατασκευές για τη δήλωσή τους, χρησιμοποιούνται εντατικά ως buffer για τη μεταφορά μεγάλων ποσοτήτων πληροφοριών σε διάφορες λειτουργίες (συμπεριλαμβανομένης της βιβλιοθήκης). Με τη σειρά τους, οι συναρτήσεις μερικές φορές πρέπει να επιστρέψουν έναν πίνακα.
Απαραίτητη
- - επεξεργαστής κειμένου;
- - Μεταγλωττιστής και σύνδεσμος C ή C ++.
Οδηγίες
Βήμα 1
Επιστρέψτε δεδομένα από μια συνάρτηση ή μια μέθοδο τοποθετώντας τα σε μια σειρά σταθερού μήκους, που κατανέμονται από τον καλούντα και μεταβιβάζονται με αναφορά. Ορίστε τον κατάλληλο τύπο δεδομένων, για παράδειγμα: typedef int t_array10 [10]; Χρησιμοποιήστε τον στη δήλωση και την εφαρμογή της απαιτούμενης λειτουργίας ή μεθόδου: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Καλέστε κατάλληλα: int aNumbers [10]; ReturnArray (aNumbers); Το μειονέκτημα αυτής της μεθόδου είναι ότι το μήκος του πίνακα είναι σταθερό.
Βήμα 2
Επιστρέψτε τα δεδομένα του πίνακα τοποθετώντας τα σε ένα buffer εξόδου που έχει εκχωρηθεί από τον καλούντα που περνά από το δείκτη. Το πρωτότυπο μιας συνάρτησης ή μιας μεθόδου μπορεί να περιέχει μια παράμετρο που δηλώνεται και στις δύο συμβολές πίνακα χωρίς προδιαγραφή μεγέθους: void ReturnArray (int anArray , int nSize) ή ως δείκτης: void ReturnArray (int * pnArray, int nSize). περιπτώσεις, η παράμετρος αναγνωριστικού μπορεί να χρησιμοποιηθεί σε σημείωση πίνακα: void ReturnArray (int * pnArray, int nSize) {για (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Αυτή η μέθοδος μετάδοσης συστοιχιών σε συναρτήσεις και επιστροφής δεδομένων πίνακα από αυτές χρησιμοποιείται στη συντριπτική πλειονότητα των περιπτώσεων κατά την ανάπτυξη προγραμμάτων C. Σημειώστε ότι Οι συναρτήσεις και οι μέθοδοι που δέχονται και επιστρέφουν δεδομένα με αυτόν τον τρόπο, κατά κανόνα, πρέπει να έχουν μια πρόσθετη παράμετρο μέσω της οποίας περνά το πραγματικό μέγεθος του buffer.
Βήμα 3
Επιστρέψτε έναν πίνακα που δημιουργήθηκε σε μια συνάρτηση ή μέθοδο. Επισήμως, σε αυτήν την περίπτωση, δεν πρέπει να επιστραφεί ένας πίνακας, αλλά ένας δείκτης στο πρώτο του στοιχείο: int * ReturnArray () {int * pnArray = new int [10]; // δουλέψτε με το pnArray return pnArray;} // λάβετε ένα δείκτη στον πίνακα που δημιουργήθηκε int * pnNumbers = ReturnArray (); // use delete pnNumbers; // Διαγραφή Αυτή η μέθοδος έχει ορισμένους περιορισμούς. Έτσι, ο πίνακας πρέπει να βρίσκεται στο σωρό. Επιπλέον, η διαγραφή του πρέπει να γίνει με τη μέθοδο που αντιστοιχεί στη δημιουργία (διαγραφή σε περίπτωση χρήσης νέου, δωρεάν για malloc, κ.λπ.).
Βήμα 4
Χρησιμοποιήστε τάξεις κοντέινερ για να επιστρέφετε εύκολα πίνακες κατά την ανάπτυξη προγραμμάτων C ++. Ένα παράδειγμα δημιουργίας και επιστροφής ενός πίνακα που αποτελεί αντικείμενο της κλάσης προτύπων διανύσματος της Β + βιβλιοθήκης τυπικών προτύπων που καθορίζεται για int μπορεί να μοιάζει με αυτό: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Σημειώστε ότι τα περισσότερα από τα δημοφιλή πλαίσια παρέχουν ισχυρές τάξεις ή πρότυπα κλάσης πίνακα. Εφαρμόζουν συχνά την έννοια της σιωπηρής ανταλλαγής δεδομένων με καταμέτρηση αναφοράς και αντιγραφή σε εγγραφή. Επομένως, η επιστροφή από την τιμή τέτοιων συστοιχιών από συναρτήσεις εκτελείται πολύ αποτελεσματικά και σχετίζεται με μια ελάχιστη κατανάλωση υπολογιστικών πόρων.