Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
*const char s = “foo”;
in Übungsfolie 3.
Dass “foo” im Textsegment liegt ist klar,
aber wieso liegt *s nicht auch dort sondern im init. Daten?
thx
das const bezieht sich auf das Ziel des Zeigers, nicht auf den Zeiger selbst.
char servus[20];
char hallo[20];
int main() {
const char *s=servus;
s[4] = 'X'; /* geht nicht */
s = hallo; /* geht */
return 0;
}
Wenn der Pointer selbst const sein soll geht das folgendermaßen:
char * const s=servus;
und wenn beides const sein soll
const char * const s=servus;
Alternativ zu
const char *s=servus;
geht übrigens auch
char const *s=servus;
und alternativ zum doppelten const folglich auch
char const * const s=servus;
Alles klar
Danke!
Muss es erstmal verdauen
btw die Arrays im oberen Beispiel kämen natürlich selbst nicht ins Textsegment sondern in diesem Fall ins BSS, weil sie ja verändert werden können selbst wenn es einen Pointer auf sie gibt der es const deklariert. Sie können dann nur über diesen Pointer nicht verändert werden