Symbolische Konstanten: "konstante Pointer"
Ein besonderes Problem tritt bei der Verwendung von Pointern (Zeigern)
auf.
Hier muß nämlich unterschieden werden, ob der Pointer selbst
oder aber das Objekt, auf das er zeigt, konstant sein sollen. Bei einem
Pointer sind ja grundsätzlich immer zwei Komponenten beteiligt:
-
der Pointer selbst und
-
das Objekt, auf das gezeigt wird.
Wird bei einer Pointer-Deklaration das Schlüsselwort const
vorangestellt, so wird zwar das Objekt, nicht aber der Pointer konstant
gemacht:
const char* char_pointer = "konstant"; // Pointer
auf eine Konstante
char_pointer[6] = 'u';
// FEHLER, da Objekt konstant!
char_pointer = "variabel";
// Okay
Um hingegen den Pointer selbst konstant zu machen, nicht jedoch das Objekt,
auf das er zeigt, muß der Operator *const verwendet werden:
char *const char_pointer = "konstant";
// konstanter Pointer
char_pointer[6] = 'u';
// Okay
char_pointer = "variabel";
// FEHLER