1 / 8

Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός. Δείκτες (Pointers). Δείκτες. Δείκτης (pointer) είναι μία μεταβλητή που περιέχει ως τιμή τη διεύθυνση μιας μεταβλητής Δήλωση μιας μεταβλητής τύπου δείκτη:

Download Presentation

Αντικειμενοστραφής Προγραμματισμός

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

  7. main στοίβα της main 5 x setToZero στοίβα της setToZero var Κλήση συναρτήσεων κατ’ αξία (call by value) #include <iostream> 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 0

  8. main στοίβα της main 0 5 x setToZero στοίβα της setToZero &x *var Κλήση συναρτήσεων κατ’ αναφορά (call by reference) #include <iostream> 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 ο οποίος προσπελαύνει την αρχική μεταβλητή

More Related