Αντιγραφή:
- Επιχειρήματα που διαβιβάστηκαν ως αντίγραφα: Διαβαίνοντας αντίγραφο, δημιουργείται ένα αντίγραφο του πραγματικού ορίσματος και μεταβιβάζεται στη συνάρτηση. Οποιαδήποτε τροποποίηση γίνει σε αυτό το αντίγραφο εντός της συνάρτησης δεν επηρεάζει την αρχική μεταβλητή εκτός της συνάρτησης.
- Τύποι τιμών: Το Pass by copy χρησιμοποιείται συνήθως με τύπους τιμών, οι οποίοι είναι τύποι δεδομένων που διατηρούν απευθείας την αξία τους. Για παράδειγμα, στη C++ ή την Java, τα int, double, boolean κ.λπ. είναι τύποι τιμών.
Παράβαση αναφοράς:
- Επιχειρήματα ως αναφορές: Σε pass by reference, μια αναφορά στο πραγματικό όρισμα μεταβιβάζεται στη συνάρτηση. Οποιεσδήποτε αλλαγές γίνονται στο όρισμα μέσα στη συνάρτηση αντικατοπτρίζονται απευθείας στην αρχική μεταβλητή έξω από τη συνάρτηση.
- Τύποι αναφοράς: Το Pass by reference χρησιμοποιείται συχνά με τύπους αναφοράς, οι οποίοι είναι τύποι δεδομένων που περιέχουν αναφορά σε μια θέση μνήμης όπου αποθηκεύονται τα πραγματικά δεδομένα. Για παράδειγμα, στη C++ και την Java, τα αντικείμενα (στιγμιότυπα κλάσεων) είναι τύποι αναφοράς.
Σε ορισμένες γλώσσες, η συμπεριφορά μπορεί να ελεγχθεί ρητά χρησιμοποιώντας λέξεις-κλειδιά όπως "pass by reference" ή "&" (για παραμέτρους αναφοράς) και "pass by value" ή "*" (για παραμέτρους τιμής).
Για παράδειγμα, στη C++:
``` cpp
void increment(int value) { // pass by value
τιμή++; // τροποποιεί το αντίγραφο
}
void incrementRef(int &value) { // pass by reference
τιμή++; // τροποποιεί την αρχική μεταβλητή
}
int main() {
int x =5; // τύπος τιμής
increment(x); // x παραμένει 5
incrementRef(x); // το x γίνεται 6
}
```
Σε Java:
```java
public void increment(int value) { // pass by value
τιμή++; // τροποποιεί το αντίγραφο
}
δημόσιο κενό incrementRef(int &value) { // pass by reference
τιμή++; // τροποποιεί την αρχική μεταβλητή
}
δημόσιο στατικό κενό main(String[] args) {
int x =5; // τύπος πρωταρχικής τιμής
increment(x); // x παραμένει 5
incrementRef(x); // το x γίνεται 6
}
```
Στην Python, τα ορίσματα περνούν πάντα με αναφορά. Ωστόσο, η Python χρησιμοποιεί έναν μηχανισμό μέτρησης αναφοράς για τη διαχείριση της διάρκειας ζωής του αντικειμένου και μπορείτε να δημιουργήσετε αντίγραφα που είναι ανεξάρτητα από τον αριθμό αναφορών του αρχικού αντικειμένου.
Η κατανόηση pass by copy και pass by reference βοηθά στην αποτελεσματική διαχείριση της μνήμης, στην αποφυγή ανεπιθύμητων τροποποιήσεων και στη διασφάλιση της σωστής συμπεριφοράς των συναρτήσεων/μεθόδων που λειτουργούν σε ορίσματα.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα