c++ - descargar - Asignación de memoria char*y char
c++ manual (3)
Dado que el primero es un puntero no const para const (solo lectura) de datos, el segundo es un array sin const, como dijo Paul, puede escribir:
p2[2]=''A''; //changing third character - okay
Pero no puedes escribir:
p1[2]=''A'';//changing third character - runtime error!
Cuál es la diferencia entre estos dos en términos de asignación de memoria.
char *p1 = "hello";
char p2[] = "hello";
El primero crea una variable de puntero (cuatro u ocho bytes de almacenamiento según la plataforma) y almacena una ubicación de un literal de cadena allí. El segundo crea una matriz de seis caracteres (incluido el byte de cero terminador de cadena) y copia el literal allí. .
Debería obtener una advertencia de compilación en la primera línea, ya que el literal es const
.
El primero es un puntero no const para const (solo lectura) de datos, el segundo es un array no const.