Δείκτες
Μερικές φορές θέλουμε να ξέρουμε όπου μια μεταβλητή κατοικεί στη μνήμη. Ένας δείκτης περιέχει τη διεύθυνση μιας μεταβλητής που έχει μια συγκεκριμένη αξία. Κατά δήλωση ενός δείκτη, την αστερίσκος τοποθετείται αμέσως πριν από το όνομα δεικτών.
Η διεύθυνση της θέσης μνήμης όπου η μεταβλητή αποθηκεύεται μπορεί να βρεθεί με την τοποθέτηση ενός ampersand μπροστά από το μεταβλητό όνομα.
int num; /* Normal integer variable */
int *numPtr; /* Δείκτης σε μια μεταβλητή ακέραιων αριθμών */
Το ακόλουθο παράδειγμα τυπώνει τη μεταβλητή αξία και τη διεύθυνση στη μνήμη εκείνης της μεταβλητής.
printf("The value %d is stored at address %X\n",
num, &num);
Για να ορίσει τη διεύθυνση του μεταβλητού num στο δείκτη numPtr, ορίζετε τη διεύθυνση της μεταβλητής, num, όπως στο παράδειγμα που δίνεται έπειτα:
numPtr = #
Για να ανακαλύψει τι αποθηκεύεται στη διεύθυνση που δείχνεται από numPtr, η μεταβλητή πρέπει να είναι. Το Dereferencing επιτυγχάνεται με τον αστερίσκο με τον οποίο ο δείκτης δηλώθηκε.
printf("The value %d is stored at address %X\n",
*numPtr, numPtr);
Όλες οι μεταβλητές σε ένα πρόγραμμα κατοικούν στη μνήμη. Οι δηλώσεις που δίνονται κατωτέρω ζητούν ότι η επιφύλαξη μεταγλωττιστών 4 ψηφιολέξεις της μνήμης σε έναν τριανταδυάμπιτο υπολογιστή για floating-point μεταβλητό Χ, κατόπιν που τίθενται την αξία 6,5 σε το.
float x;
x = 6.5;
Δεδομένου ότι η θέση διευθύνσεων στη μνήμη καθόλου μεταβλητού λαμβάνεται με την τοποθέτηση του χειριστή & πριν από το όνομά του επομένως &x είναι η διεύθυνση του Χ. γ επιτρέπει σε μας για να πάει ένα στάδιο περαιτέρω και να καθορίσει μια μεταβλητή, αποκαλούμενη δείκτη που περιέχει τη διεύθυνση άλλων μεταβλητών. Μάλλον μπορούμε να πούμε ότι ο δείκτης δείχνει άλλη μεταβλητή. Παραδείγματος χάριν:
float x;
float* px;
x = 6.5;
px = &x;
καθορίζει px για να είναι ένας δείκτης στα αντικείμενα του επιπλέοντος σώματος τύπων, και το θέτει ίσο με τη διεύθυνση του Χ. Κατά συνέπεια, * px αναφέρεται στην αξία του Χ:
|