cpp:pointers
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
cpp:pointers [2021/04/27 04:21] – [Δείκτες και πίνακες] gthanos | cpp:pointers [2021/04/27 04:34] – [Δείκτες αμετάβλητου περιεχομένου και δείκτες αμετάβλητης διεύθυνσης (const)] gthanos | ||
---|---|---|---|
Line 123: | Line 123: | ||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | Οι δείκτες οφείλουν να δείχνουν σε διευθύνσεις μνήμης που ανήκουν στην διεργασία που εκτελείται. Στην πραγματικότητα όμως οι δείκτες μπορούν να πάρουν οποιαδήποτε τιμή ακόμη και τιμές εκτός του εύρους διευθύνσεων που έχουν ανατεθεί από το λειτουργικό στην τρέχουσα διεργασία. Η ανάγνωση από διευθύνσεις | + | Οι δείκτες οφείλουν να δείχνουν σε διευθύνσεις μνήμης που ανήκουν στη διεργασία που εκτελείται. Στην πραγματικότητα όμως οι δείκτες μπορούν να πάρουν οποιαδήποτε τιμή ακόμη και τιμές εκτός του εύρους διευθύνσεων που έχουν ανατεθεί από το λειτουργικό |
<code c++ intArrayPointer.cpp> | <code c++ intArrayPointer.cpp> | ||
Line 136: | Line 136: | ||
</ | </ | ||
- | ===== Δείκτες αμετάβλητου περιεχομένου | + | ===== Δείκτες αμετάβλητου περιεχομένου ===== |
Είδαμε ότι οι δείκτες είναι μεταβλητές που περιέχουν διευθύνσεις μνήμης στις οποίες αποθηκεύονται άλλες μεταβλητές. Μέσω των δεικτών μπορούμε να διαβάσουμε και να γράψουμε το περιεχόμενο μία διεύθυνσης μνήμης. Υπάρχουν όμως περιπτώσεις που ένας δείκτης είναι επιθυμητό να διαβάζει μόνο τα περιεχόμενα των διευθύνσεων μνήμης στα οποία δείχνει χωρίς να μπορεί να τα μεταβάλλει. Σε αυτή την περίπτωση αρκεί να δηλώσετε τον τύπο δεδομένων στον οποίο δείχνει ο δείκτης ως //const// ως εξής: | Είδαμε ότι οι δείκτες είναι μεταβλητές που περιέχουν διευθύνσεις μνήμης στις οποίες αποθηκεύονται άλλες μεταβλητές. Μέσω των δεικτών μπορούμε να διαβάσουμε και να γράψουμε το περιεχόμενο μία διεύθυνσης μνήμης. Υπάρχουν όμως περιπτώσεις που ένας δείκτης είναι επιθυμητό να διαβάζει μόνο τα περιεχόμενα των διευθύνσεων μνήμης στα οποία δείχνει χωρίς να μπορεί να τα μεταβάλλει. Σε αυτή την περίπτωση αρκεί να δηλώσετε τον τύπο δεδομένων στον οποίο δείχνει ο δείκτης ως //const// ως εξής: | ||
Line 180: | Line 180: | ||
</ | </ | ||
- | Από τον παραπάνω παράδειγμα παρατηρήστε ότι ο δείκτης //start// στη συνάρτηση // | + | Από τον παραπάνω παράδειγμα παρατηρήστε ότι ο δείκτης //start// στη συνάρτηση // |
+ | |||
+ | ===== Δείκτες αμετάβλητης διεύθυνσης ===== | ||
+ | |||
+ | Υπάρχουν περιπτώσεις | ||
<code c> | <code c> | ||
Line 187: | Line 191: | ||
</ | </ | ||
- | όπως στο παρακάτω παράδειγμα: | + | Το παρακάτω παράδειγμα |
<code c const_address.cpp> | <code c const_address.cpp> | ||
Line 208: | Line 212: | ||
</ | </ | ||
- | Τέλος εάν επιθυμείτε να έχετε | + | ===== Δείκτες αμετάβλητης διεύθυνσης και αμετάβλητου |
+ | |||
+ | Στην περίπτωση που | ||
<code c>char c = ' | <code c>char c = ' | ||
Line 248: | Line 254: | ||
<code c> | <code c> | ||
int x; | int x; | ||
- | int * p1 = & | + | int * p1 = & |
- | const int * p2 = & | + | const int * p2 = & |
- | int * const p3 = & | + | int * const p3 = & |
- | const int * const p4 = & | + | const int * const p4 = & |
</ | </ | ||
</ | </ |
cpp/pointers.txt · Last modified: 2023/04/25 13:14 by gthanos