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.
*t1 = 'z';
t1 = s;
s = t2; // Fehler: Umwandlung const char* -> char* nicht möglich
s = (char*) t3; // Explizites casting möglich
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";
*t2 = 'z'; // Fehler: Inhalt nicht veränderbar
*t3 = 'z';
*t4 = 'z'; // Fehler: Inhalt nicht veränderbar
t2 = s;
t3 = s; // Fehler: Zeiger nicht veränderbar
t4 = s; // Fehler: Zeiger nicht veränderbar
s = t3; // Fehler: Umwandlung char* const -> char* nicht 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.