C-Programmierung

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

Options: