Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α12.3 · Δείκτης σε δείκτη

Διάλεξη 12, διαφάνεια 27 · Δυσκολία ★☆☆ · trace · Κεφάλαια: 12

Τι θα τυπώσει το παρακάτω;

int x = 42;
int * ptr = &x;
int ** ptr2 = &ptr;
printf("%p %d", *ptr2, **ptr2);

Στη διαφάνεια η μνήμη σχεδιάζεται ως εξής: το x βρίσκεται στη διεύθυνση 100 με τιμή 42, ο ptr στη διεύθυνση 200 με τιμή 100, και ο ptr2 στη διεύθυνση 400 με τιμή 200.

Υπόδειξη

Κάθε * «ακολουθεί ένα βέλος»: ξεκινήστε από την τιμή του ptr2 και βρείτε τι υπάρχει στη διεύθυνση όπου δείχνει, μία φορά για το *ptr2 και δύο φορές για το **ptr2. Σκεφτείτε επίσης σε τι μορφή τυπώνει το %p.

Αριθμός στον οδηγό: Α12.3 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec12-pointer-to-pointer · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec12-pointer-to-pointer.html · Markdown (GitHub)