Tengo algunas dudas sobre cadenas literales en C++.String Literals
char *strPtr ="Hello" ;
char strArray[] ="Hello";
Ahora strPtr y strArray se consideran literales de cadena.
Según mi comprensión, los literales de cadena se almacenan en la memoria de solo lectura, por lo que no podemos modificar sus valores.
No podemos hacer
strPtr[2] ='a';
and strArray[2]='a';
Tanto las declaraciones anteriores deben ser ilegal. El compilador debe arrojar errores en ambos casos.
El compilador guarda los literales de cadena en la memoria de solo lectura, por lo que si intentamos modificarlos, el compilador arroja errores.
También los datos de const también se consideran de solo lectura.
¿Es que ambos literales de cadena y datos de const se tratan de la misma manera? ¿Puedo eliminar la constancia usando const_cast de string literal puede cambiar su valor?
¿Dónde exactamente se almacenan los literales de cadena? (en la sección de datos del programa)
"El tipo declarado de strPtr es", ¿te refieres a strArray? – 4pie0