Ein Zeiger ist ein Datentyp, der eine Adresse speichert.
Beispiele
// Null-Pointer beim Initialisieren (good practice)
int *zeiger = NULL;
int var = 5;
// zeiger ist ein pointer, var ist ein int
// äquivalent zu int *zeiger; int var = 5;
zeiger = &var;
printf("%d\n", *zeiger); // 5
*zeiger = 13;
printf("%d\n", *zeiger); // 13int variable = 0x29;
int *pointer;
pointer = &variable;
variable; // 29 (Wert der Variable)
&variable; // 0000007b609ff86c (Speicherort der Variable)
pointer; // 0000007b609ff86c (Wert des Pointers)
&pointer; // 0000007b609ff860 (Speicherort des Pointers)
*pointer; // 29 (Inhalt des Speicherortes, worauf der Pointer zeigt)Zeiger verändern
Bei zeiger++ oder zeiger-- springt der zeiger immer um die Größe des Zeiger-Datentyps weiter.
int var;
int *zeiger = &var;
printf("%p\n", zeiger); // z.B. 0x0010
zeiger++;
printf("%p\n", zeiger); // dann 0x001d (0x0010 + 4 (größe von int))Evaulation
*zeiger++;
// ++ wird zuerst ausgeführt, daher ist das oben äquivalent zu:
*(zeiger++);
// Gewollt war wahrscheinlich:
(*zeiger)++;Siehe auch