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?