Δείκτες
Ορισμός: Μεταβλητή
δείκτη (pointer variable) ή δείκτης (pointer) είναι μία μεταβλητή με τιμή μία
διεύθυνση της κύριας μνήμης.
Δεν υπάρχει η δυνατότητα χρήσης δεικτών σε όλες τις γλώσσες
προγραμματισμού.
Δήλωση:
<τύπος> * <όνομα – δείκτη>;
π.χ.
int * num_ptr;
Αρχικοποίηση:
<τύπος> * <όνομα-δείκτη>=>διεύθυνση>;
π.χ.
int *num_ptr = 1000;
int *num_ptr= #
Το σύμβολο & μπροστά από μία μεταβλητή σημαίνει «πάρε τη
διεύθυνση στη μνήμη όπου βρίσκεται αυτή η μεταβλητή».
Δείκτης σε δείκτη
<τύπος> * * <μετ-δείκτη>;
π.χ.
int ** ptr;
Ανάθεση:
int *num_ptr;
ptr = & num_ptr;
main () {
int x=1;
int y=2;
int *p;
p=&x; /* η
p δείχνει
τη διεύθυνση της x */
y=*p; /*
η y γίνεται
1, δηλαδή η τιμή της x */
*p=0; /*
η x γίνεται
0 */
*p=*p+10; /* x=x+10 */
y=*p+10; /* y=x+10 */
// Και οι 3 παρακάτω εντολές είναι
ισοδύναμες με το x=x+1
*p+=1;
++*p;
(*p)++;
}
|
Το παρακάτω πρόγραμμα χρησιμοποιεί έναν δείκτη σε δείκτη. Αν
το τρέξουμε θα δούμε ότι εκτυπώνει το 10.
#include
<stdio.h>
main() {
int x=5;
int y=10;
int *ptr; // Δείκτης σε ακέραιο
int **ptr2; // Δείκτης σε δείκτη σε ακέραιο
ptr=&x; // Ο δείκτης prt παίρνει τη διεύθυνση του x («δείχνει»
στο x)
ptr2=&ptr; // Ο δείκτης prt2 παίρνει τη διεύθυνση του ptr («δείχνει» στον ptr)
*ptr2=&y; // Αυτό που δείχνει ο prt2 (δηλαδή ο ptr) παίρνει τη διεύθυνση του y
printf("%d", *ptr);
}
|