BUSCAR
INICIO
MAPA
FAQs
UTILIDADES
GLOSARIO
REGISTRO
COLABORAR
QUIENES SOMOS

USUARIO

PASSWORD

FAQs
2. Definiciones e Inicializaciones

7. ¿Cuál es la diferencia entre estas inicializaciones?
 
char a[] = "string literal";
char *p  = "string literal";

Me da un error si intento asignar un valor a p[i];

Una cadena de caracteres literal puede ser usado de dos maneras ligeramente diferentes.

Por un lado, como un valor para inicializar un array de caracteres (es el caso de tu primera declaración). Esto especifica los valores iniciales de los caracteres que hay en el array.

Por otro lado, la cadena se convierte en un array de caracteres estático y sin nombre, que pueden ser almacenados en la memoria sólo para leer. Es por esto, por lo que seguramente no podrás modificarlo.

Dado que un array se puede considerar como un puntero, la cadena también se puede considerar como un puntero, y por lo tanto puedes inicializar p con ella. Sin embargo, el valor que realmente se estar asignando a p, es un puntero al primer carácter de la cadena.
.