konstante Zeichenkette
-
Grüße,
Wenn ich folgendes mache:
char *zeichen = "Zeichenkette";Dann ist das doch eine konstante Zeichenkette. Wieso schreibt man dann nicht gleich:
const char *zeichen = "Zeichenkette";mfg
-
Macht man doch auch.

-
Oder etwas ausführlicher: Eigentlich sollte man auf String-Literale nur mit einem
const char*verweisen, daß an der Stelle auch normalechar*erlaubt sind, hat afaik historische Gründe* - wer das ausnutzt, ist selber schuld, wenn ihm das Programm um die Ohren fliegt, weil das Betriebssystem den String in einem schreibgeschützten Speicherbereich gelagert hat.* Frag mich nicht nach Details, das müssten die C-Experten besser wissen.
-
Du hast vollkommen Recht Suzanne, das ist eine konstante Zeichenkette, die sollte man immer als const char* schreiben. Wie CStoll schon erwähnt hat, hat die Erlaubnis von char* historische Gründe. Ein guter Compiler sollte allerdings zumindest eine Warning ausspucken.
Allerdings ist folgendes erlaubt:char mystr[] = "Hello, World!"; mystr[1] = 'a';In diesem Fall wird ein nicht konstaner Bereich mit einem konstanten Bereich _initialisiert_. Deshalb darf man hier die Zeichen ändern.