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 AntwortenIch 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?