Estoy confundido acerca de la siguiente línea de código:matriz de punteros a char arrays
char* words[] = { "aaa", "bbbb", "ccccc", "dddddd" };
mi modo de entender, cada palabra se almacena primero y luego cada posición de la matriz words
apuntará a continuación a la primera carácter de cada palabra. ¿Cómo se almacenan estas cadenas? ¿Hay una asignación dinámica aquí o estas palabras están almacenadas en la pila?
Si se almacenan en la pila, ¿de qué manera se almacenan? Por ejemplo, si puedo imprimir algunos de los contenidos de words
de la siguiente manera:
#include <stdio.h>
int main() {
char* words[] = { "aaa", "bbbb", "ccccc", "dddddd" };
printf("\n\n(*words)[0] = %s", words[0]);
printf("\n\n(*words)[0]+1 = %s", words[0]+1);
return 0;
}
en lugar de imprimir aaa
y bbbb
, lo que consigo es aaa
y aa
. Realmente no entiendo cuál es el motivo de esto ya que, de la forma en que lo veo, words[0]+1
debe apuntar a la cadena bbbb
y no al segundo carácter de aaa
. ¿Que esta pasando aqui?
¿Estás confusas palabras '[0] + 1',' (palabras + 1) [0] 'y' palabras [1] '? –
Pruebe '& words [0] + 1' – oldrinb