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 normale char* 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.


Anmelden zum Antworten