Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Αντικειμενοστραφής Προγραμματισμός Δείκτες (Pointers)

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Αντικειμενοστραφής Προγραμματισμός Δείκτες (Pointers)"— Μεταγράφημα παρουσίασης:

1 Αντικειμενοστραφής Προγραμματισμός Δείκτες (Pointers)

2 Δείκτες Δείκτης (pointer) είναι μία μεταβλητή που περιέχει ως τιμή τη διεύθυνση μιας μεταβλητής Δήλωση μιας μεταβλητής τύπου δείκτη: όπως ισχύει και για οποιαδήποτε άλλη μεταβλητή, ένας δείκτης πρέπει πρώτα να δηλωθεί προτού μπορέσει να χρησιμοποιηθεί Η δήλωση: int *ptr; δηλώνει μία μεταβλητή τύπου δείκτη με όνομα ptr η οποία μπορεί να λάβει ως τιμή τις διευθύνσεις μεταβλητών τύπου int ένας δείκτης ο οποίος έχει ως τιμή τη διεύθυνση μιας μεταβλητής x, θεωρείται ότι ‘’δείχνει’’ προς τη μεταβλητή x

3 Κανονικές Μεταβλητές int main() { int x; x = 5; return 0; } main x int 5 όνομα μεταβλητής τύπος δεδομένων τιμή μεταβλητής FFAFE5 διεύθυνση μεταβλητής

4 Τελεστές που σχετίζονται με δείκτες Μοναδιαίος Τελεστής & (τελεστής διεύθυνσης) εφαρμοζόμενος σε οποιαδήποτε μεταβλητή (ή αντικείμενο), επιστρέφει τη διεύθυνση της μεταβλητής (ή του αντικειμένου) Μοναδιαίος Τελεστής * (έμμεσης αναφοράς) εφαρμοζόμενος σε μεταβλητές τύπου δείκτη, επιστρέφει το περιεχόμενο της μνήμης προς την οποία ‘’δείχνει’’ ο δείκτης

5 Κανονικές Μεταβλητές και Δείκτες int main() { int x; int *ptr; x = 5; ptr = &x; return 0; } main x int 5 FFAFE5 ptr int* FFAFE5 //o ptr δείχνει στην x

6 Δείκτες Αν ένας δείκτης ‘’δείχνει’’ προς μία μεταβλητή, μπορεί να χρησιμοποιηθεί για την έμμεση προσπέλαση της μεταβλητής int main() { int x; x = 5; } int *ptr; ptr = &x; η έκφραση x = x + 1; είναι ισοδύναμη με την *ptr = *ptr + 1 Για την εκτύπωση της x, οι εντολές cout << x; cout << *ptr; είναι ισοδύναμες

7 Κλήση συναρτήσεων κατ’ αξία (call by value) #include using namespace std; void setToZero(int var); int main( ) { int x; x = 5; setToZero(x); cout << x << endl; return 0; } void setToZero(int var) { var = 0; } Η τιμή της μεταβλητής x στη συνάρτηση main δεν αλλάζει μετά την κλήση της setToZero Η τιμή του ορίσματος κατά την κλήση της συνάρτησης αντιγράφεται στην αντίστοιχη παράμετρο της setToZero main x 5 στοίβα της main setToZero var στοίβα της setToZero 0

8 Κλήση συναρτήσεων κατ’ αναφορά (call by reference) #include using namespace std; void setToZero(int *var); int main( ) { int x; x = 5; setToZero(&x); cout << x << endl; return 0; } void setToZero(int *var) { *var = 0; } Αυτό που περνά ως παράμετρος είναι η διεύθυνση της μεταβλητής x Η διεύθυνση αντιγράφεται στον αντίστοιχο δείκτη της setToZero ο οποίος προσπελαύνει την αρχική μεταβλητή main x 5 στοίβα της main setToZero *var στοίβα της setToZero &x&x 0


Κατέβασμα ppt "Αντικειμενοστραφής Προγραμματισμός Δείκτες (Pointers)"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google