const-Zeiger

Auch Zeigertypen können als const deklariert werden. Dabei ist darauf zu achten, ob der Zeiger oder das Objekt, auf das er zeigt konstant sein soll.

      char*       t1 = "Das ist ein völlig verändebarer String";
const char*       t2 = "Dieser Pointer ist konstant, nicht aber der Inhalt";
      char* const t3 = "Inhalt ist nicht veränderbar, wohl aber der Pointer";
const char* const t4 = "Pointer und Inhalt sind nicht veräbderbar";
char* s = "Noch ein String";

*t1 = 'z';
*t2 = 'z';   // Fehler: Inhalt nicht veränderbar
*t3 = 'z';
*t4 = 'z';   // Fehler: Inhalt nicht veränderbar

t1 = s;
t2 = s;
t3 = s;      // Fehler: Zeiger nicht veränderbar
t4 = s;      // Fehler: Zeiger nicht veränderbar

s = t2;      // Fehler: Umwandlung const char* -> char* nicht möglich
s = t3;      // Fehler: Umwandlung char* const -> char* nicht möglich

s = (char*) t3; // Explizites casting möglich

Wie am Ende des Beispiels zu sehen ist, sind implizite Typumwandlungen von einem konstanten Typ in einen nichtkonstanten nicht erlaubt. Explizites Casting ist wie fast immer erlaubt. Die Verantwortung für die Folgen trägt dann aber der Programmierer.