Warum ist mein char * schreibbar und manchmal nur in C ++ lesbar?

Ich hatte wirklich große Probleme das zu verstehenchar* in letzter Zeit. Angenommen, ich habe eine rekursive Funktion zum Zurücksetzen von a erstelltchar* Aber je nachdem, wie ich es initialisiere, erhalte ich einige Zugriffsverletzungen und in meinem C ++ - Primer habe ich nichts gefunden, was mir den richtigen Weg zum Verständnis geboten hätte. Deshalb bitte ich um Ihre Hilfe.

FALL 1 Erster Fall, in dem ich eine Zugriffsverletzung bekam, als ich versuchte, Briefe auszutauschen:

char * bob = "hello";

FALL 2 Dann habe ich es versucht, damit es funktioniert

char * bob = new char[5];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';

FALL 3 Aber als ich dann einen Cout gemacht habe, habe ich am Ende einen zufälligen Mist bekommen, also habe ich ihn für geändert

char * bob = new char[6];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
bob[5] = '\0';

FALL 4 Das hat funktioniert, also habe ich mir gesagt, warum das dann nicht funktioniert

 char * bob = new char[6];
 bob = "hello\0";

FALL 5 und es ist gescheitert, ich habe auch irgendwo gelesen, dass man sowas machen könnte

char* bob[];

Dann füge noch etwas hinzu. Meine Frage ist, warum manche scheitern und andere nicht, und wie geht das am besten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage