User Tools

Site Tools


cpp:references

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:references [2018/04/25 08:04] – [Αναφορές (References)] gthanoscpp:references [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 2: Line 2:
  
 Μία μεταβλητή τύπου αναφοράς αποτελεί ένα αμετάβλητο δείκτη σε μία υφιστάμενη μεταβλητή. Οι βασικές διαφορές ανάμεσα στις αναφορές και τους δείκτες είναι οι εξής: Μία μεταβλητή τύπου αναφοράς αποτελεί ένα αμετάβλητο δείκτη σε μία υφιστάμενη μεταβλητή. Οι βασικές διαφορές ανάμεσα στις αναφορές και τους δείκτες είναι οι εξής:
-  * Κατά την δήλωση μίας αναφοράς είναι υποχρεωτική και η αρχικοποίηση της. Οι δείκτες μπορούν να αρχικοποιηθούν σε οποιοδήποτε σημείου του προγράμματος (εκτός εάν είναι αμετάβλητης διεύθυνσης).+  * Κατά την δήλωση μίας αναφοράς είναι υποχρεωτική και η αρχικοποίηση της. Οι δείκτες μπορούν να αρχικοποιηθούν σε οποιοδήποτε σημείο του προγράμματος (εκτός εάν είναι αμετάβλητης διεύθυνσης).
   * Η διεύθυνση στην οποία δείχνει μία αναφορά δεν μπορεί να είναι NULL. Το περιεχόμενο όμως της διεύθυνσης μπορεί να πάρει οποιαδήποτε τιμή (συμπεριλαμβανομένης της τιμής NULL).   * Η διεύθυνση στην οποία δείχνει μία αναφορά δεν μπορεί να είναι NULL. Το περιεχόμενο όμως της διεύθυνσης μπορεί να πάρει οποιαδήποτε τιμή (συμπεριλαμβανομένης της τιμής NULL).
   * Η αναφορά μπορεί να μεταβάλλει το περιεχόμενο της διεύθυνσης στην οποία δείχνει, δεν μπορεί όμως να μεταβάλλει την τιμή της διεύθυνσης στην οποία έχει αρχικοποιηθεί.   * Η αναφορά μπορεί να μεταβάλλει το περιεχόμενο της διεύθυνσης στην οποία δείχνει, δεν μπορεί όμως να μεταβάλλει την τιμή της διεύθυνσης στην οποία έχει αρχικοποιηθεί.
-  * Η πρόσβαση στο περιεχόμενο μιας αναφοράς γίνεται απευθείας με χρήση του ονόματος της αναφοράς, με τον ίδιο ακριβώς τρόπο που προσπελάυνεται το περιεχόμενο μίας μεταβλητής.+  * Η πρόσβαση στο περιεχόμενο μιας αναφοράς γίνεται απευθείας με χρήση του ονόματος της αναφοράς, με τον ίδιο ακριβώς τρόπο που προσπελαύνεται το περιεχόμενο μίας μεταβλητής.
  
 Δείτε τα παρακάτω παραδείγματα ορισμού και χρήσης αναφορών Δείτε τα παρακάτω παραδείγματα ορισμού και χρήσης αναφορών
Line 71: Line 71:
 </code> </code>
  
-===== Αναφορές ως επιστρεφόμενες τιμές σε συναρτήσεις =====+===== Αναφορές ως επιστρεφόμενες τιμές συναρτήσεων =====
  
-Όταν μία συνάρτηση επιστρέφει μία αναφορά τότε η επιστρεφόμενη τιμής της μπορεί να χρησιμοποιηθεί τόσο για διάβασμα του περιεχομένου της σχετικής διεύθυνσης όσο και για γράψιμο αυτούΔείτε το παρακάτω τμήμα κώδικα, όπου η συνάρτηση //value// χρησιμοποιείται για να αναθέσει τιμές σε στοιχεία του πίνακα //vals//.+Όταν μία συνάρτηση επιστρέφει μία αναφορά τότε η επιστρεφόμενη τιμής μπορεί να χρησιμοποιηθεί  
 +  * για το διάβασμα του περιεχομένου της σχετικής διεύθυνσης  
 +  * για το γράψιμο του περιεχομένου της σχετικής διεύθυνσης 
 +  
 +Δείτε το παρακάτω τμήμα κώδικα, όπου η συνάρτηση //array_value// χρησιμοποιείται για να αναθέσει τιμές σε στοιχεία του πίνακα //vals//.
  
-<code reference_return_values.cpp>+<code cpp reference_return_values.cpp>
 #include <iostream>  #include <iostream> 
 using namespace std; using namespace std;
    
-double vals[] = {10.112.6, 33.1, 24.1, 50.0}; +double& array_value(double array[], int i ) { 
-  +   return array[i];   // return a reference to the ith element
-double& value( int i ) { +
-   return vals[i];   // return a reference to the ith element+
 } }
    
-// main function to call above defined function. 
 int main () { int main () {
 +  
 +  double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
    
-   cout << "Value before change" << endl;+   cout << "Array before change" << endl;
    for ( int i = 0; i < 5; i++ ) {    for ( int i = 0; i < 5; i++ ) {
       cout << "vals[" << i << "] = ";       cout << "vals[" << i << "] = ";
Line 94: Line 97:
    }    }
    
-   value(1) = 20.23; // change 2nd element +   array_value(vals, 1) = 20.23; // αλλαγή του 2ου στοιχείου 
-   value(3) = 70.8;  // change 4th element+   array_value(vals, 3) = 70.8;  // αλλαγή του 4ου στοιχείου
    
-   cout << "Value after change" << endl;+   cout << "Array after change" << endl;
    for ( int i = 0; i < 5; i++ ) {    for ( int i = 0; i < 5; i++ ) {
       cout << "vals[" << i << "] = ";       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;       cout << vals[i] << endl;
    }    }
- +
    return 0;    return 0;
 } }
cpp/references.1524643452.txt.gz · Last modified: 2018/04/25 07:04 (external edit)