Warum kann ich einem char * pointer [duplicate] ein String-Literal zuweisen?

Diese Frage hat hier bereits eine Antwort:

Was ist der Typ von String-Literalen in C und C ++? 4 Antworten

Ich denke, die String-Literale inc++ ist die Art vonconst char*. Und Sie können nicht @ zuweisconst char* Objekt zu einemnon-constant char* Objekt. Aber in Visual Studio 2010. Der folgende Code kann ohne Fehler oder Warnungen kompiliert werden, was jedoch zu einem Laufzeitfehler führt.

int main(void)
{      
    char *str2 = "this is good";
    str2[0] = 'T';
    cout << str2;
    getchar();
    return 0;
}

Und wenn wir den Wert der Zeichenfolge nicht ändern, ist das Lesen des Werts in Ordnung:

for(char *cp = str2; *cp !=0; ++cp) {
    printf("char is %c\n", *cp);
}
getch();
return 0;

So warum können wir hier ein const char * einem char * zuweisen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage