Σε γλώσσες χαμηλότερου επιπέδου όπως η C ή C + + , πίνακες είναι στατικές . Μόλις δηλώνεται με μια τιμή μεγέθους , η σειρά θα διατηρήσει πάντα αυτό το μέγεθος . Ο μεταγλωττιστής διαθέτει ένα μπλοκ συνεχούς μνήμης για τη συστοιχία . Οποιεσδήποτε άλλες λειτουργίες ή τις μεταβλητές που χρειάζονται μνήμη θα τοποθετηθεί μετά τη συστοιχία . Κατά συνέπεια , η σειρά δεν μπορεί να αλλάξει σε μέγεθος, χωρίς να παραβλέπονται τα δεδομένα που ακολουθεί . Έτσι , για παράδειγμα , όταν ένας προγραμματιστής δηλώνει έναν πίνακα με είκοσι θέσεις , ότι η σειρά θα έχει πάντα είκοσι θέσεις , είτε χρησιμοποιούνται είτε όχι , για τη ζωή της δομής των δεδομένων .
Εικόνων μνήμης Κατανομή σε η σωρός
Η
Για να παρακάμψουν αυτόν τον περιορισμό , ωστόσο , οι προγραμματιστές μπορούν να εκχωρήσει μνήμη στο σωρό . Κανονικά , οι μεταβλητές και πίνακες που δηλώνονται σε ένα πρόγραμμα ή μια λειτουργία τοποθετείται στη στοίβα , η οποία αντιπροσωπεύει ουσιαστικά τη βραχυπρόθεσμη μνήμη . Μόλις τη διάρκεια της λειτουργίας η συστοιχία υπάρχει σε τελειώματα, η συστοιχία διαγράφεται. Με τη χρήση του " νέου " λέξη-κλειδί , όμως , ο προγραμματιστής μπορεί να συγκεντρώσει από τη μνήμη σωρού , η οποία είναι η μακροπρόθεσμη μνήμη που υπάρχει έξω από τη συνάρτηση που δηλώνει τη σειρά . Επιπλέον , ο προγραμματιστής μπορεί να χρησιμοποιήσει το Heap να δηλώσει συστοιχίες δυναμικά .
Η Δυναμική
Πίνακες
Με συστοιχίες , ο προγραμματιστής πρέπει να δηλώσει το μέγεθος του πίνακα σε δήλωση. Το μέγεθος αυτό πρέπει να εκπροσωπείται από μία σταθερή τιμή , είτε μια σταθερή μεταβλητή ή έναν ακέραιο . Ωστόσο, χρησιμοποιώντας το «νέο» φορέα , ο προγραμματιστής μπορεί να χρησιμοποιήσει τακτικές μεταβλητές συστοιχίες μεγέθους , και ο χρήστης μπορεί να εισέλθει ακόμη και την αξία αυτών των μεταβλητών κατά το χρόνο εκτέλεσης . Το παρακάτω παράδειγμα δείχνει τη διαφορά :
int main ( ) { int
arr [ 5 ] ? //Νέα σειρά , πρέπει να έχουν διαστάσεις σταθερό μέγεθος valueint = 5 ? Int * dynamic_array = νέα int [size ] ? //μέγεθος του πίνακα είναι δυναμική
εικόνων αλλαγή μεγέθους πίνακες
Η
Με αυτές τις δυναμικές συστοιχίες , ο προγραμματιστής μπορεί στη συνέχεια να δημιουργήσετε συστοιχίες που μπορεί να αλλάξει το μέγεθός τους . Η κατηγορία « φορέας » αντιπροσωπεύει μια δυναμικά την επέκταση ή συρρίκνωση συστοιχία ότι taks πλεονέκτημα των δυναμικών πινάκων . Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να δημιουργήσετε ένα απλό πίνακα που μεγαλώνει σε μέγεθος :
int main ( ) { int
* arr = new int [ 5 ] ? Int new_size = 10 ?
arr [ 0 ] = 1 ? arr [ 1 ] = 2 ?
/* το μέγεθος * /int * arr2 = new int [ new_size ] ?
arr2 [ 0 ] = arr [ 0 ] ? arr2 [ 1 ] = arr [ 1 ] ?
delete [ ] arr ? arr = arr2 ?
επιστροφή 0? }
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα