Frage zu const char *str ="ABC";
-
Hallo
Wie schon in einem anderen Betrag geschrieben beschäfige ich mich mit C/C++ und hätte da eine Frage zur Verständnis.
Es geht um die definition dieser C-Zeichenkette(string).
const char* str = "ABC";
Diese Zeichenkette müsste jetzt 4 Zeichen enthalten:
1. A
2. B
3. C
4. \0 --> fügt der Compiler selbstständig einIn meinem Buch steht jetzt folgender Text dazu:
Im Gegensatz zu C-Arrays werden Stringliterale bei vielen Systemen im schreibgeschützten Speicher angelegt: Eine Änderung wie str[0] = 'X'; führt dann zu einer Laufzeitfehlermeldung.(Ist mir klar) Deswegen: Zeiger auf Textliterale stets als const char* deklarieren. Eine neue Zuweisung str = "Neuer Text"; ist möglich, wobei gleichzeitig die Informationen über die vorherige Stelle verloren gehen.
So jetzt zu meiner Frage:
const bezieht sich immer auf den Ausdruck der links davon steht.
Nur wenn links vom Schlüsselwort const nichts / eine öffnende Klammer ist, bezieht es sich auf das, was rechts davon steht.Hier steht links nicht bei const, also müste sich const auf char * beziehen. Wie kann es dann sein das ich dem Zeiger eine neue Adesse zuweisen kann?
Schon mal Danke für euer Hilfe.
mfg
Fujittsu
-
Das const bezieht sich auf das char, nicht auf char*. Du hast da auf deutsch gesagt einen (veränderlichen) Zeiger auf einen konstanten char. Oder wenn du deine "von rechts nach links lesen"-Regel anwenden willst, ist
const char *
äquivalent zuchar const *
.Wie schon in einem anderen Betrag geschrieben beschäfige ich mich mit C/C++ und hätte da eine Frage zur Verständnis.
Ich empfehle dir, nicht beide Sprachen zu mischen, sonst lernst du keines von beidem. C und C++ sind von der Denkweise her sehr sehr unterschiedlich und auch ein Mischen von Sprachmitteln geht praktisch immer schief.
-
Danke für die Hilfe.
mfg
Fujittsu