Por que meu char * é gravável e, às vezes, somente leitura em C ++
Eu tive grandes problemas para entender ochar*
ultimamente. Digamos que eu fiz uma função recursiva para reverter umchar*
mas, dependendo de como inicializá-lo, recebo algumas violações de acesso e, na minha cartilha C ++, não encontrei nada que me desse o caminho certo para entender, e estou buscando sua ajuda.
CASO 1 Primeiro caso em que tive violação de acesso ao tentar trocar cartas:
char * bob = "hello";
CASO 2 Então eu tentei isso para fazê-lo funcionar
char * bob = new char[5];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
CASO 3 Mas então, quando fiz uma cotação, recebi uma porcaria aleatória no final, então mudei para
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 Isso funcionou, então eu disse a mim mesma por que isso não funcionaria então
char * bob = new char[6];
bob = "hello\0";
CASO 5 e falhou, eu também li em algum lugar que você poderia fazer algo como
char* bob[];
Em seguida, adicione algo a isso. Minha pergunta é por que alguns falham e outros não, e qual é a melhor maneira de fazê-lo?