¿Por qué mi char * se puede escribir y, a veces, solo se lee en C ++?
He tenido grandes problemas para entender elchar*
últimamente. Digamos que hice una función recursiva para revertir unchar*
pero dependiendo de cómo lo inicializo, obtengo algunas violaciones de acceso, y en mi manual de C ++ no encontré nada que me diera el camino correcto para entender, así que estoy buscando su ayuda.
CASO 1 Primer caso en el que obtuve una infracción de acceso al intentar intercambiar letras:
char * bob = "hello";
CASO 2 Entonces intenté esto para que funcione
char * bob = new char[5];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
CASO 3 Pero luego, cuando hice un truco, obtuve un poco de basura al final, así que lo cambié por
char * bob = new char[6];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
bob[5] = '\0';
CASO 4 Eso funcionó, así que me dije a mí mismo por qué no funcionaría entonces
char * bob = new char[6];
bob = "hello\0";
CASO 5 y falló, también he leído en alguna parte que podrías hacer algo como
char* bob[];
Luego agrega algo a eso. Mi pregunta es ¿por qué algunos fallan y otros no, y cuál es la mejor manera de hacerlo?