Unklarheit mit char*



  • Ich hab folgenden Code:

    1.)

    #include <stdio.h>
    
    void foo(char* c)
    {
        *c = 'Z';
    }
    
    int main()
    {
        char *c = "ABC";
        foo(c);
        printf("%s",c);
        return 0;
    }
    

    und 2.)

    #include <stdio.h>
    
    void foo(char* c)
    {
        *c = 'Z';
    }
    
    int main()
    {
        char string[4] = "ABC";
        char *c = &string;
        foo(c);
        printf("%s",c);
        return 0;
    }
    

    Bei beiden Beispielen sollte als Ausgabe "ZBC" erscheinen.
    Beim Ausführen des ersten Codebeispiels erscheint immer eine Fehlermeldung ("Test.exe hat ein Problem festgestellt und muss beendet werden.").
    Das Zweite funktioniert ohne Problem. Ich verstehe allerdings nicht warum ich im ersten Beispiel nicht direkt den Pointer verändern kann. Wenn mit das bitte jemand erklären könnte.

    Danke im Voraus

    Gruß André



  • beim char *c = "ABC"; zeigt der pointer auf eine stringkonstante, die nicht beschreibbar ist. bei einem char c[] = "ABC"; wird ein array angelegt, dass auch beschrieben werden darf. die stringkonste dient hier nur zur initialisierung.
    🙂



  • Gut danke, dass die Sachen letztendlich immer so einfach sind. 🙂


Anmelden zum Antworten