(Translated by https://www.hiragana.jp/)
Αναφορά (υπολογιστές) - Βικιπαίδεια Μετάβαση σしぐまτたうοおみくろん περιεχόμενο

Αναφορά (υπολογιστές)

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια

Σしぐまτたうηいーたνにゅー πληροφορική κかっぱαあるふぁιいおた συγκεκριμένα σしぐまτたうοおみくろんνにゅー προγραμματισμό, αναφορά είναι μみゅーιいおたαあるふぁ τιμή ηいーた οποία επιτρέπει σしぐまτたうοおみくろんνにゅー προγραμματιστή έμμεση πρόσβαση σしぐまεいぷしろん ένα συγκεκριμένο στοιχείο δεδομένων (όπως μみゅーιいおたαあるふぁ μεταβλητή/variable ή μみゅーιいおたαあるふぁ εγγραφή/record ηいーた οποία βρίσκεται σしぐまτたうηいーたνにゅー μνήμη τたうοおみくろんυうぷしろん υπολογιστή ή σしぐまεいぷしろん κάποια άλλη μονάδα αποθήκευσης). Ηいーた αναφορά λέμε ότι αναφέρεται σしぐまεいぷしろん ένα συγκεκριμένο στοιχείο δεδομένων κかっぱαあるふぁιいおた ηいーた πρόσβαση σしぐまτたうαあるふぁ δεδομένα ονομάζεται έμμεση αναφορά (dereferencing the reference).[1]

Ηいーた αναφορά είναι διαφορετική από τたうαあるふぁ δεδομένα πぱいοおみくろんυうぷしろん αναφέρεται. Ηいーた αναφορά είναι μみゅーιいおたαあるふぁ διεύθυνση φυσικής μνήμης σしぐまτたうηいーたνにゅー οποία τたうαあるふぁ δεδομένα είναι αποθηκευμένα (ή μνήμη αυτή μπορεί νにゅーαあるふぁ είναι ηいーた μνήμη τたうοおみくろんυうぷしろん υπολογιστή ή κάποια μονάδα αποθήκευσης). Γがんまιいおたαあるふぁ αυτό τたうοおみくろん λόγο ηいーた αναφορά ονομάζεται δείκτης ή διεύθυνση ηいーた οποία δείχνει τたうαあるふぁ δεδομένα. Ηいーた αναφορά μπορεί επίσης νにゅーαあるふぁ αναφέρεται σしぐまτたうηいーたνにゅー διαφορά μεταξύ μιας διεύθυνσης βάσης μみゅーεいぷしろん τたうηいーたνにゅー διεύθυνση ενός στοιχείου δεδομένων (όπως γがんまιいおたαあるふぁ παράδειγμα σしぐまεいぷしろん ένα πίνακα όπου ηいーた διαφορά αυτή μπορεί νにゅーαあるふぁ αναφέρεται σしぐまτたうηいーたνにゅー διαφορά της διεύθυνσης ενός στοιχείου από τたうοおみくろん πρώτο στοιχείο τたうοおみくろんυうぷしろん πίνακα).[1]

Οおみくろんιいおた αναφορές χρησιμοποιούνται συχνά σしぐまτたうοおみくろん προγραμματισμός, ιδιαίτερα όταν θέλουμε νにゅーαあるふぁ περάσουμε μεγάλες δομές ως παραμέτρους σしぐまεいぷしろん συναρτήσεις ή νにゅーαあるふぁ διαμοιραστούμε τたうαあるふぁ δεδομένα μέσα σしぐまεいぷしろん ένα πρόγραμμα. Ηいーた αναφορά μπορεί επίσης νにゅーαあるふぁ δείχνει μみゅーιいおたαあるふぁ μεταβλητή ή μみゅーιいおたαあるふぁ εγγραφή ηいーた οποία περιέχει αναφορές σしぐまεいぷしろん άλλα δεδομένα. Αυτή ηいーた ιδέα είναι ηいーた βάση γがんまιいおたαあるふぁ έμμεση αναφορά σしぐまεいぷしろん συνδεδεμένες δομές δεδομένες όπως οおみくろんιいおた συνδεδεμένες λίστες.[2][1]

Ηいーた έννοια της αναφοράς μπορεί νにゅーαあるふぁ συγκριθεί μみゅーεいぷしろん τたうηいーたνにゅー έννοια μιας ταχυδρομικής διεύθυνσης σしぐまτたうηいーたνにゅー καθημερινή ζωή. Γがんまιいおたαあるふぁ παράδειγμα ηいーた διεύθυνση "Καποδιστρίου 12" μπορεί αναφέρεται σしぐまτたうοおみくろん ότι από τたうηいーたνにゅー αρχή της οδού Καποδιστρίου αあるふぁνにゅー κατέβεις τたうοおみくろん δρόμο τたうοおみくろん σπίτι βρίσκεται 3 σπίτια κάτω σしぐまτたうηいーたνにゅー αριστερή πλευρά. Πηγαίνοντας σしぐまτたうοおみくろん κτήριο σしぐまτたうοおみくろん οποίο αναφέρεται ηいーた ταχυδρομική διεύθυνση είναι ανάλογο μみゅーεいぷしろん τたうηいーたνにゅー λειτουργία έμμεσης αναφοράς (dereferencing). Τたうοおみくろん όνομα "Τたうοおみくろん συνεργείο τたうοおみくろんυうぷしろん Μανόλη" μπορεί νにゅーαあるふぁ είναι μοναδικό αναγνωριστικό γがんまιいおたαあるふぁ τたうοおみくろん κτήριο αλλά δでるたεいぷしろんνにゅー μπορεί νにゅーαあるふぁ συγκριθεί μみゅーεいぷしろん τたうηいーたνにゅー αναφορά σしぐまεいぷしろん δεδομένα, γιατί γがんまιいおたαあるふぁ νにゅーαあるふぁ βρεθεί τたうοおみくろん κτήριο μみゅーεいぷしろん τたうοおみくろん όνομα αυτό θέλει αναζήτηση σしぐまεいぷしろん κάποιο οδηγό (πぱい.χかい. χρυσό οδηγό) κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー είναι αυτονόητα ξεκάθαρο. Μみゅーιいおたαあるふぁ αναφορά δεδομένων μπορεί νにゅーαあるふぁ συγκριθεί μみゅーεいぷしろん τたうηいーたνにゅー ταμπέλα τたうοおみくろんυうぷしろん καταστήματος πぱいοおみくろんυうぷしろん λέει "Γがんまιいおたαあるふぁ συνεργείο λάστιχων νにゅーαあるふぁ πάτε σしぐまτたうηいーた οδό Δημοκρατίας 23". Περνώντας μみゅーιいおたαあるふぁ αναφορά ως παράμετρο σしぐまεいぷしろん μみゅーιいおたαあるふぁ υπορουτίνα κかっぱαあるふぁιいおた όχι τたうαあるふぁ δεδομένα είναι σしぐまαあるふぁνにゅー νにゅーαあるふぁ δίνει σしぐまεいぷしろん ένα φίλο τたうηいーたνにゅー διεύθυνση τたうοおみくろんυうぷしろん συνεργείου αντί νにゅーαあるふぁ φέρνεις τたうοおみくろんνにゅー Μανόλη κかっぱαあるふぁιいおた όλα τたうαあるふぁ εργαλεία τたうοおみくろんυうぷしろん συνεργείου σしぐまτたうοおみくろん σπίτι τたうοおみくろんυうぷしろん φίλου.

Αναφορές σしぐまτたうηいーた C++

[Επεξεργασία | επεξεργασία κώδικα]

Σしぐまτたうηいーた C++, oιいおた αναφορές αρχικοποιούνται μみゅーιいおたαあるふぁ φορά, όπως οおみくろんιいおた σταθερές. Σしぐまτたうοおみくろん παρακάτω παράδειγμα έχουμε παραδείγματα αναφορών.

/* int ⊤     // ΛΑΘΟΣ - πρέπει νにゅーαあるふぁ αρχικοποιηθεί  */

int buf[5] = {1, 2, 3, 4, 5};

int &first = buf[0];            // int *p = &buf[0];
int &last = buf[4];             // int *q = &buf[4];

first = -1;                     // *p = -1;
last = -5;                      // *q = -5;

C++ κかっぱαあるふぁιいおた πέρασμα τιμών σしぐまεいぷしろん συνάρτηση

[Επεξεργασία | επεξεργασία κώδικα]

Σしぐまτたうοおみくろん παρακάτω παράδειγμα C++ βλέπουμε πέρασμα τιμής (παραμέτρου) σしぐまεいぷしろん μみゅーιいおたαあるふぁ συνάρτηση μみゅーεいぷしろん δύο τρόπους: μみゅーεいぷしろん αναφορά κかっぱαあるふぁιいおた μみゅーεいぷしろん τιμή. Όταν γίνεται πέρασμα της παραμέτρου μみゅーεいぷしろん τιμή αντιγράφεται ηいーた μεταβλητή ενώ όταν γίνεται πέρασμα της παραμέτρου μみゅーεいぷしろん αναφορά περνάει ηいーた διεύθυνση της μεταβλητής κかっぱαあるふぁιいおた δでるたεいぷしろんνにゅー είναι γρηγορότερο. Αλλαγές σしぐまτたうοおみくろん πέρασμα μみゅーεいぷしろん τιμή δでるたεいぷしろんνにゅー επηρεάζουν τたうηいーたνにゅー εξωτερική μεταβλητή ενώ σしぐまτたうοおみくろん πέρασμα μみゅーεいぷしろん διεύθυνση, επηρεάζουν τたうηいーたνにゅー εξωτερική μεταβλητή. [1]

#include <iostream>      // γがんまιいおたαあるふぁ τたうηいーたνにゅー βιβλιοθήκη εισόδου/εξόδου κかっぱαあるふぁιいおた τたうοおみくろん cout

using namespace std;    // ηいーた cout βρίσκεται κάτω από τたうοおみくろん χώρο ονομάτων std

int greater_of_VALUE(int a, int b) {
  if (a > b) 
     return a;
  else
    return b;
} 

int greater_of_REFERENCE(int &a, int &b) {
  if (a > b) 
     return a;
  else
    return b;
} 

void add_one_VALUE(int a) {
   a++;
}

void add_one_REFERENCE(int &a) {
   a++;
}

int main() {
   int x = 8;
   int y = 10;
   
   // Ηいーた κλήση είναι ηいーた ίδια όπως κかっぱαあるふぁιいおた τたうοおみくろん αποτέλεσμα 
   // (εμφανίζεται οおみくろん αριθμός 10 - σしぐまεいぷしろん κάθε κλήση παρακάτω)   
   cout << greater_of_REFERENCE(x,y) << endl;
   cout << greater_of_VALUE(x,y) << endl;

   // κλήση της συνάρτησης μみゅーεいぷしろん πέρασμα τιμής
   // δでるたεいぷしろんνにゅー έχουμε μεταβολή της μεταβλητής x
   add_one_VALUE(x);
   cout << x << endl;      // εμφανίζει 8

   // κλήση της συνάρτησης μみゅーεいぷしろん πέρασμα διεύθυνσης
   // έχουμε μεταβολή της μεταβλητής x
   add_one_REFERENCE(x);
   cout << x << endl;      // εμφανίζει 9

   return 1;
}
  1. 1,0 1,1 1,2 1,3 Αあるふぁ-Γがんま. Σταφυλοπάτης· Κかっぱ. Κοντογιάννης· Γがんま. Μαΐστρος. «Προγραμματιστικές Τεχνικές: Δείκτες, Πίνακες κかっぱαあるふぁιいおた Δείκτες, Δείκτες σしぐまεいぷしろん Συναρτήσεις». Εργαστήριο Λογισμικού Εθνικού Μετσόβιου Πολυτεχνείου. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 3 Δεκεμβρίου 2011. Ανακτήθηκε στις 3 Οκτωβρίου 2011. 
  2. Αあるふぁ-Γがんま. Σταφυλοπάτης· Κかっぱ. Κοντογιάννης· Γがんま. Μαΐστρος. «Προγραμματιστικές Τεχνικές: Στοίβες, Συνδεδεμένες Λίστες, Ουρές». Εργαστήριο Λογισμικού Εθνικού Μετσόβιου Πολυτεχνείου. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 3 Δεκεμβρίου 2011. Ανακτήθηκε στις 3 Οκτωβρίου 2011.