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:23] – [Δείκτες και πίνακες] gthanos | cpp:pointers [2021/04/27 04:40] – [Δείκτες τύπου void] gthanos | ||
---|---|---|---|
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 244: | Line 250: | ||
- | <WRAP center round tip 80%> | + | <WRAP center round tip 95%> |
Συμπερασματικά, | Συμπερασματικά, | ||
<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 = & |
</ | </ | ||
</ | </ | ||
Line 289: | Line 295: | ||
===== Δείκτες τύπου void ===== | ===== Δείκτες τύπου void ===== | ||
- | Ο δείκτης τύπου //void// είναι ένας ειδικός τύπος δείκτη ο οποίος έχει το πλεονέκτημα ότι μπορεί να μετατραπεί σε οποιονδήποτε τύπο δείκτη. Επίσης οποιοσδήποτε τύπος δείκτη μπορεί να μετατραπεί σε δείκτη τύπου //void//. Ο περιορισμός των δεικτών τύπου void είναι ότι δεν υπάρχει τρόπος να προσπελάσουμε το περιεχόμενο | + | Ο δείκτης τύπου //void// είναι ένας ειδικός τύπος δείκτη ο οποίος έχει το πλεονέκτημα ότι μπορεί να μετατραπεί σε οποιονδήποτε τύπο δείκτη. Επίσης οποιοσδήποτε τύπος δείκτη μπορεί να μετατραπεί σε δείκτη τύπου //void//. Ο περιορισμός των δεικτών τύπου void είναι ότι δεν υπάρχει τρόπος να προσπελάσουμε |
<code c void_ptr.cpp> | <code c void_ptr.cpp> | ||
Line 317: | Line 323: | ||
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
- | Δεν | + | Δεν |
</ | </ | ||
cpp/pointers.txt · Last modified: 2023/04/25 13:14 by gthanos