Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ δείκτη και αναφοράς

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

Συγκριτικό διάγραμμα

Βάση για σύγκρισηΔείκτηςΑναφορά
ΒασικόςΟ δείκτης είναι η διεύθυνση μνήμης μιας μεταβλητής.Η αναφορά είναι ένα ψευδώνυμο για μια μεταβλητή.
ΕπιστρέφειΗ μεταβλητή δείκτη επιστρέφει την τιμή που βρίσκεται στη διεύθυνση που είναι αποθηκευμένη στη μεταβλητή δείκτη που προηγείται από το σύμβολο δείκτη '*'.Η μεταβλητή αναφοράς επιστρέφει τη διεύθυνση της μεταβλητής που προηγείται από το σημείο αναφοράς '&'.
Χειριστές*, ->& &
Μηδενική αναφοράΗ μεταβλητή δείκτη μπορεί να αναφέρεται σε NULL.Η μεταβλητή αναφοράς δεν μπορεί ποτέ να αναφέρεται σε NULL.
ΑρχικοποίησηΜπορεί να δημιουργηθεί ένας μη πρωτεύων δείκτης.Μια μη πρωτόγνωρη αναφορά δεν μπορεί ποτέ να δημιουργηθεί.
Χρόνος εκκίνησηςΗ μεταβλητή δείκτη μπορεί να αρχικοποιηθεί σε οποιοδήποτε χρονικό σημείο του προγράμματος.Η μεταβλητή αναφοράς μπορεί να αρχικοποιηθεί μόνο κατά τη στιγμή της δημιουργίας της.
ΕπανεγκατάστασηΗ μεταβλητή δείκτη μπορεί να επανεγκατασταθεί όσες φορές απαιτείται.Η μεταβλητή αναφοράς δεν μπορεί ποτέ να επανενεργοποιηθεί εκ νέου στο πρόγραμμα.

Ορισμός δείκτη

Ένας "δείκτης" είναι μια μεταβλητή που διατηρεί τη θέση μνήμης μιας άλλης μεταβλητής. Οι χειριστές που χρησιμοποιούνται από τη μεταβλητή δείκτη είναι * και ->. Η δήλωση της μεταβλητής δείκτη περιέχει τον τύπο δεδομένων βάσης που ακολουθείται από το σύμβολο '*' και το όνομα της μεταβλητής.

 πληκτρολογήστε * var_name; 

Ας καταλάβουμε το δείκτη με τη βοήθεια ενός παραδείγματος.

 int a = 4; int * ptr = & a; cout < 

Εδώ έχουμε μια ακέραια μεταβλητή a και μια μεταβλητή pointer ptr η οποία αποθηκεύει τη διεύθυνση της μεταβλητής a.

Αριθμητική σειρά δείκτη

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

Πολλαπλός προσανατολισμός

Ένας δείκτης δείχνει την άλλη μεταβλητή δείκτη που δείχνει την τιμή-στόχο. Αυτό το είδος δείκτη αρχικοποιείται πάντοτε με τη διεύθυνση μιας άλλης μεταβλητής δείκτη. Η δήλωση ενός δείκτη σε έναν δείκτη είναι ως εξής.

 πληκτρολογήστε ** var_name; 

Ας το μελετήσουμε με ένα παράδειγμα.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

Δείκτης λειτουργίας

Όπως γνωρίζουμε ότι μια συνάρτηση δεν είναι μια μεταβλητή, εξακολουθεί να έχει μια θέση μνήμης, που μπορεί να αντιστοιχιστεί σε μια μεταβλητή δείκτη. Μόλις ένας δείκτης δείξει μια συνάρτηση, τότε η λειτουργία μπορεί να καλείται με αυτόν τον δείκτη της λειτουργίας.

Τα σημαντικά σημεία που πρέπει να θυμάστε σχετικά με το δείκτη.

  • Η μεταβλητή δείκτη μπορεί να δημιουργηθεί χωρίς την αρχικοποίησή της και μπορεί να αρχικοποιηθεί οπουδήποτε στο πρόγραμμα.
  • Η μεταβλητή δείκτη μπορεί να επανενεργοποιηθεί σε μια άλλη μεταβλητή.
  • Η μεταβλητή δείκτη μπορεί να αναφέρεται σε NULL.

Ορισμός αναφοράς

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

 πληκτρολογήστε & refer_var_name = var_name; 

Εδώ, ο τύπος είναι ο τύπος δεδομένων, ο τελεστής & επιβεβαιώνει ότι είναι μια μεταβλητή αναφοράς. Το όνομα_αναφοράς είναι το όνομα της μεταβλητής αναφοράς. Το var_name είναι το όνομα της μεταβλητής, την οποία θέλουμε να αναφερθεί η μεταβλητή αναφοράς.

Ας κατανοήσουμε τη μεταβλητή αναφοράς με τη βοήθεια ενός παραδείγματος.

 int a = 4; int & b = a; // b αναφέρεται στο ab = 6. // τώρα a = 6 

Εδώ, η μεταβλητή του τύπου int έχει εκχωρηθεί μια τιμή 4. Η μεταβλητή αναφοράς έχει εκχωρηθεί η μεταβλητή a, δηλαδή b είναι ψευδώνυμο a. Τώρα, όταν εκχωρούμε μια άλλη τιμή στο b, τροποποιούμε την τιμή του a. Ως εκ τούτου, μπορεί να ειπωθεί ότι οι αλλαγές που έγιναν σε μια μεταβλητή αναφοράς θα εμφανιστούν επίσης σε μεταβλητή που αναφέρεται από εκείνη τη μεταβλητή αναφοράς.

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

Η μεταβλητή αναφοράς μπορεί να χρησιμοποιηθεί με τρεις τρόπους:

  • Ως τιμή επιστροφής λειτουργίας.
  • Ως παράμετρος λειτουργίας.
  • Ως ανεξάρτητη αναφορά.

Βασικές διαφορές μεταξύ δείκτη και αναφοράς

  1. Η αναφορά είναι σαν τη δημιουργία ενός άλλου ονόματος για να αναφερθεί μια μεταβλητή έτσι ώστε να μπορεί να αναφέρεται με διαφορετικά ονόματα. Από την άλλη πλευρά, ένας δείκτης είναι απλώς μια διεύθυνση μνήμης μιας μεταβλητής.
  2. Μια μεταβλητή δείκτη αν προηγείται από το '*' επιστρέφει την τιμή μιας μεταβλητής της οποίας η διεύθυνση είναι αποθηκευμένη στο δείκτη αραίωση. Μια μεταβλητή αναφοράς που προηγείται από το '&' επιστρέφει τη διεύθυνση αυτής της μεταβλητής.
  3. Οι χειριστές δείκτη είναι * και -> ενώ ο χειριστής αναφοράς είναι &.
  4. Μια μεταβλητή δείκτη αν δεν φέρει διεύθυνση μεταβλητής που δείχνει μηδενική. Από την άλλη πλευρά, μια μεταβλητή αναφοράς δεν μπορεί ποτέ να αναφερθεί στο Null.
  5. Μπορείτε πάντα να δημιουργήσετε μια μη μεταβλητή μεταβλητή δείκτη, αλλά δημιουργούμε μια αναφορά όταν χρειαζόμαστε ένα ψευδώνυμο κάποιας μεταβλητής ώστε να μην μπορείτε ποτέ να δημιουργήσετε μια ενοποιημένη αναφορά.
  6. Μπορείτε να επαναλάβετε την προετοιμασία ενός δείκτη, αλλά από τη στιγμή που αρχίσετε να μην κάνετε επανεκκίνηση,
  7. Μπορείτε να δημιουργήσετε έναν κενό δείκτη και να τον αρχικοποιήσετε ανά πάσα στιγμή, αλλά πρέπει να αρχίσετε την αναφορά μόνο όταν δημιουργείτε μια αναφορά.

Σημείωση:

Η Java δεν υποστηρίζει δείκτες.

συμπέρασμα

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

Top