Zeigerschema
← Dereferenzierung | ● | Call-By-Value →
Zeiger und Referenz im Adressraum des linearen Speichers
char *p; char v; p=&v -> p=7 *p=0 -> v=0 Wert 0 7 Speicherzellen -------v--------------------p--------- ... Adresse 0 5 ^ 10 15 20 25 | 30 35 | | \------Referenz------/ *p
Fallgrube: Die Dereferenzierung eines nicht initialisierten Pointers hat eine Speicherverletzung zur Folge.
Fallgrube: Deklariert man einen Pointer als const (also z.B. const char *p
), so bedeutet das, dass der Inhalt der referenzierten Speicheradresse nicht verändert werden darf, d.h. es ist nur die Lese-Operation, nicht aber die Schreib-Operation erlaubt (read-only). Der Pointer selber darf verändert werden.
Ein gängiges Beispiel sind Zeichenketten (Strings). Der Typ einer Zeichenkette ist const char *, also ein Zeiger auf das erste Zeichen der Kette. Die Zeichenkette ist als const deklariert, da man sie ja nicht verändern darf.
← Dereferenzierung | ● | Call-By-Value →