cpp:references
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:references [2017/03/16 14:54] – gthanos | cpp:references [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| Μία μεταβλητή τύπου αναφοράς αποτελεί ένα αμετάβλητο δείκτη σε μία υφιστάμενη μεταβλητή. Οι βασικές διαφορές ανάμεσα στις αναφορές και τους δείκτες είναι οι εξής: | Μία μεταβλητή τύπου αναφοράς αποτελεί ένα αμετάβλητο δείκτη σε μία υφιστάμενη μεταβλητή. Οι βασικές διαφορές ανάμεσα στις αναφορές και τους δείκτες είναι οι εξής: | ||
| - | * Κατά την δήλωση μίας αναφοράς είναι υποχρεωτική και η αρχικοποίηση της. Οι δείκτες μπορούν να αρχικοποιηθούν σε οποιοδήποτε σημείου του προγράμματος. | + | * Κατά την δήλωση μίας αναφοράς είναι υποχρεωτική και η αρχικοποίηση της. Οι δείκτες μπορούν να αρχικοποιηθούν σε οποιοδήποτε σημείο του προγράμματος |
| - | * Η διεύθυνση στην οποία δείχνει μία αναφορά δεν μπορεί να είναι NULL. Το περιεχόμενο όμως της διεύθυνση μπορεί να πάρει οποιαδήποτε τιμή (συμπεριλαμβανομένης της τιμής NULL). | + | * Η διεύθυνση στην οποία δείχνει μία αναφορά δεν μπορεί να είναι NULL. Το περιεχόμενο όμως της διεύθυνσης μπορεί να πάρει οποιαδήποτε τιμή (συμπεριλαμβανομένης της τιμής NULL). |
| * Η αναφορά μπορεί να μεταβάλλει το περιεχόμενο της διεύθυνσης στην οποία δείχνει, | * Η αναφορά μπορεί να μεταβάλλει το περιεχόμενο της διεύθυνσης στην οποία δείχνει, | ||
| - | * Η πρόσβαση στο περιεχόμενο μιας αναφοράς γίνεται απευθείας με χρήση του ονόματος της αναφοράς, | + | * Η πρόσβαση στο περιεχόμενο μιας αναφοράς γίνεται απευθείας με χρήση του ονόματος της αναφοράς, |
| Δείτε τα παρακάτω παραδείγματα ορισμού και χρήσης αναφορών | Δείτε τα παρακάτω παραδείγματα ορισμού και χρήσης αναφορών | ||
| Line 34: | Line 34: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ===== Αναφορές ως παράμετροι συναρτήσεων ===== | ||
| + | |||
| + | Οι αναφορές μπορούν να χρησιμοποιηθούν ως παράμετροι σε συναρτήσεις σε αναλογία με τους δείκτες. Η χρήση αναφορών συνεπάγεται ότι μετά την έξοδο από τη καλούμενη συνάρτηση το περιεχόμενο των παραμέτρων που έχουν δημιουργηθεί ως αναφορές μπορεί να έχει αλλάξει. Δείτε το παρακάτω παράδειγμα, | ||
| + | |||
| + | <code c reference_function_params.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | void swap(int& | ||
| + | int temp; | ||
| + | temp = x; /* save the value at address x */ | ||
| + | x = y; /* put y into x */ | ||
| + | y = temp; /* put x into y */ | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | int main () { | ||
| + | // local variable declaration: | ||
| + | int a = 100; | ||
| + | int b = 200; | ||
| + | |||
| + | cout << " | ||
| + | cout << " | ||
| + | |||
| + | /* calling a function to swap the values.*/ | ||
| + | | ||
| + | |||
| + | cout << "After swap, value of a :" << a << endl; | ||
| + | cout << "After swap, value of b :" << b << endl; | ||
| + | |||
| + | | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Αναφορές ως επιστρεφόμενες τιμές συναρτήσεων ===== | ||
| + | |||
| + | Όταν μία συνάρτηση επιστρέφει μία αναφορά τότε η επιστρεφόμενη τιμής μπορεί να χρησιμοποιηθεί | ||
| + | * για το διάβασμα του περιεχομένου της σχετικής διεύθυνσης | ||
| + | * για το γράψιμο του περιεχομένου της σχετικής διεύθυνσης | ||
| + | |||
| + | Δείτε το παρακάτω τμήμα κώδικα, | ||
| + | |||
| + | <code cpp reference_return_values.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | double& array_value(double array[], int i ) { | ||
| + | | ||
| + | } | ||
| + | |||
| + | int main () { | ||
| + | | ||
| + | double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0}; | ||
| + | |||
| + | cout << "Array before change" | ||
| + | for ( int i = 0; i < 5; i++ ) { | ||
| + | cout << " | ||
| + | cout << vals[i] << endl; | ||
| + | } | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | cout << "Array after change" | ||
| + | for ( int i = 0; i < 5; i++ ) { | ||
| + | cout << " | ||
| + | cout << vals[i] << endl; | ||
| + | } | ||
| + | |||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
cpp/references.1489676085.txt.gz · Last modified: 2017/03/16 14:54 (external edit)
