¿por qué puedo asignar literales de cadena a un puntero char * [duplicado]
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es el tipo de literales de cadena en C y C ++? 4 respuestas Creo que los literales de cadena enc++
es el tipo deconst char*
. Y no puedes asignarconst char*
objeto a unanon-constant char*
objeto. Pero en Visual Studio 2010. El siguiente código puede compilarse sin errores ni advertencias, lo que sin embargo generará un error de tiempo de ejecución.
int main(void)
{
char *str2 = "this is good";
str2[0] = 'T';
cout << str2;
getchar();
return 0;
}
Y si no modificamos el valor de la cadena, leer el valor está bien:
for(char *cp = str2; *cp !=0; ++cp) {
printf("char is %c\n", *cp);
}
getch();
return 0;
Entonces, ¿por qué podemos asignar un const char * a un char * aquí?