Pointer

Ein Pointer ist eine Variable, deren Wert eine Speicheradresse ist.

Über einen Pointer kann indirekt auf einen Speicherbereich zugegriffen werden.

Grundoperationen in C

Ausdruck Bedeutung
&x Adresse von x
*p Inhalt an der Adresse, auf die p zeigt
p + n Adresse n Elemente weiter, abhängig vom Pointer-Typ

Beispiel:

int x = 5;
int *p = &x;

*p = 18;

Danach gilt:

x == 18

weil *p = 18 den Speicherinhalt von x verändert.

Wichtig

Ein Pointer selbst ist auch nur eine Variable. Wird der Pointerwert geändert, ändert man nicht automatisch den Inhalt an der ursprünglichen Adresse.

void upgrade(int *p) {
    p = 18; // falsch: verändert nur den lokalen Pointerwert
}

Korrekt wäre:

void upgrade(int *p) {
    *p = 18; // verändert den Inhalt an der Adresse
}

Typische Fehler