Τρόπος εκτέλεσης κλήσης με αναφορά στο C ++



Αυτό το άρθρο θα σας παράσχει μια μυστική γνώση του Call by Reference στο C ++ με Εφαρμογές και πώς διαφέρει από το Call by Value.

Η εργασία με το C ++ δεν είναι δύσκολη υπόθεση εάν έχετε ήδη ένα υπόβαθρο στο C, καθώς και οι δύο μοιράζονται τόνους ιδεών μεταξύ τους. Όμως, το C ++ έχει κάποιες έννοιες που δεν αποτελούν μέρος του παραδείγματος Γ. Σε αυτό το άρθρο Call by Reference στο C ++, θα μιλήσουμε για μια τέτοια ιδέα που είναι οι μεταβλητές αναφοράς και οι εφαρμογές της με την ακόλουθη σειρά:

Μεταβλητές αναφοράς

Το C ++ μας δίνει έναν νέο τύπο μεταβλητής, δηλαδή μια μεταβλητή αναφοράς. Μπορούμε να σκεφτούμε μια μεταβλητή αναφοράς ως ψευδώνυμο για την αρχική μας μεταβλητή. Αυτό είναι ακριβώς η λειτουργικότητα μιας μεταβλητής αναφοράς σε μία γραμμή.





διαφορά μεταξύ υπερφόρτωσης και υπέρβασης στην Java

Για παράδειγμα, εάν το όνομά σας είναι Χάρισον αλλά στο σπίτι, τα μέλη της οικογένειάς σας σας αποκαλούν Χάρι. Τώρα ας δούμε μερικές λεπτομέρειες των μεταβλητών αναφοράς. Η δήλωση και η χρήση αυτού του τύπου μεταβλητής διαφέρουν από τις συνηθισμένες μεταβλητές που χρησιμοποιούμε, αλλά μοιάζουν πολύ με τις μεταβλητές δείκτη.

Σύνταξη:



int Hello = 1 int * ptr int & World = Γεια σας

Όταν δημιουργούμε μια μεταβλητή 'Hello' που περιέχει την τιμή '1', ένα τμήμα της μνήμης χρησιμοποιείται για να επηρεάσει την τιμή '1' το όνομα αυτού του τμήματος θα είναι 'Hello' και η διεύθυνση αυτού του τμήματος θα είναι κάποια δεκαεξαδική τιμή, για παράδειγμα0x64. όταν γράφουμεint& Κόσμος = Γεια σαςΔημιουργείται μεταβλητή «Κόσμος» που δείχνει προς την ίδια θέση μνήμης.

Η συμπερίληψη της γραμμής World ++ θα κάνει αλλαγές στη διεύθυνση 0x64, αυτό σημαίνει ότι η τιμή της μεταβλητής 'Hello' θα αλλάξει επίσης. Κάποιοι μπορεί να επισημάνουν ότι είναι μεταβλητές αναφοράς διαφορετικές από τις μεταβλητές δείκτη που θα συζητήσουμε στο τελευταίο μέρος αυτής της ανάρτησης.

Κλήση με αξία και Κλήση με αναφορά στο C ++

Κλήση ανά αξία: Το Call by Value είναι μια ευρέως χρησιμοποιούμενη μέθοδος. Τις περισσότερες φορές θα χρησιμοποιείτε την προσέγγιση κλήσης ανά αξία, καθώς δεν θέλετε να αλλάξουν οι αρχικές τιμές των μεταβλητών. Ως εκ τούτου, χρησιμοποιήσαμε τη μέθοδο κλήσης κατά αξία για να καλέσουμε μια συνάρτηση, μόνο οι τιμές των μεταβλητών περνούν. Αυτό επιτυγχάνεται δημιουργώντας εικονικές μεταβλητές στη μνήμη.



# συμπερίληψη χρησιμοποιώντας χώρο ονομάτων std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Κλήση με αξία σε C ++

Από την παραπάνω εικόνα, μπορούμε να δούμε ότι μόλις καλέσουμε τη συνάρτηση add (), οι τιμές των μεταβλητών x και y αντιγράφονται στις μεταβλητές a και b. Τα A και b είναι εικονικές μεταβλητές.

Κλήση με αναφορά: Τώρα, ας μιλήσουμε για την κλήση με τη μέθοδο αναφοράς. Σε αυτήν τη μέθοδο δεν δημιουργούνται ξεχωριστές εικονικές μεταβλητές, μια αναφορά μιας ήδη υπάρχουσας μεταβλητής μεταφέρεται στη μέθοδο. Αυτή η αναφορά δείχνει την ίδια θέση μνήμης και ως εκ τούτου δεν δημιουργούνται ξεχωριστά αντίγραφα στη μνήμη. Το σημαντικό σημείο που πρέπει να σημειωθεί εδώ είναι ότι οι αλλαγές που έγιναν στις μεταβλητές αναφοράς αντικατοπτρίζονται στην εικονική μεταβλητή.

πώς να γράψετε singleton τάξη στην Ιάβα
# συμπερίληψη χρησιμοποιώντας χώρο ονομάτων std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {εάν (a 

Όπως μπορούμε να δούμε ότι η παραπάνω συνάρτηση φαίνεται διαφορετική σε σύγκριση με τις κανονικές λειτουργίες, καθώς ο τύπος επιστροφής είναι «int &». Αυτή η συνάρτηση επιστρέφει μια αναφορά στο a ή b ανάλογα με την κατάσταση. Το σημαντικό σημείο που πρέπει να σημειωθεί εδώ είναι ότι οι τιμέςδεν επιστρέφονται.

Εάν καλέσουμε τη συνάρτηση min (x, y) = 10. 10 θα αντιστοιχιστεί στο x εάν είναι ελάχιστο ή στο y εάν ​​το y είναι ελάχιστο.

Κλήση με αναφορά Vs Pointer

Σε όλα μας τα παραδείγματα είδαμε ότι πάντα αντιστοιχίζαμε μια τιμή στη μεταβλητή αναφοράς που δημιουργήσαμε, καθώς οι μεταβλητές αναφοράς δεν μπορούν να είναι NULL ενώ οι μεταβλητές δείκτη μπορούν να είναι NULL και μπορούν να προκαλέσουν απροσδόκητα σφάλματα.

εφαρμογές μεγάλης ανάλυσης δεδομένων

Οι μεταβλητές αναφοράς δεν μπορούν να ανατεθούν εκ νέου, ενώ οι μεταβλητές δείκτη μπορούν να δείχνουν κάποια άλλη μεταβλητή αργότερα στο πρόγραμμα.

Μια μεταβλητή δείκτη κρατά την τιμή διεύθυνσης μιας συγκεκριμένης μεταβλητής, ενώ η διεύθυνση της μεταβλητής αναφοράς είναι η ίδια με εκείνη της μεταβλητής στην οποία αναφέρεται.

Με αυτό, καταλήγουμε στο τέλος αυτής της πρόσκλησης μέσω αναφοράς στο άρθρο C ++. Ελπίζω να έχετε κατανοήσει τις διάφορες υλοποιήσεις της κλήσης από Value και αναφορά και πώς και οι δύο διαφέρουν.

Εάν θέλετε να μάθετε περισσότερα, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.