personas.¿Cuál es el significado de 'char (* p) [5];'?
Estoy tratando de comprender las diferencias entre estas tres declaraciones:
char p[5];
char *p[5];
char (*p)[5];
que estoy tratando de averiguar esto haciendo algunas pruebas, ya que cada guía de lectura declaraciones y cosas por el estilo no ha ayudado yo hasta ahora. Escribí este pequeño programa y no está funcionando (He probado otros tipos de uso de la tercera declaración y me he quedado sin opciones):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
char p1[5];
char *p2[5];
char (*p3)[5];
strcpy(p1, "dead");
p2[0] = (char *) malloc(5 * sizeof(char));
strcpy(p2[0], "beef");
p3[0] = (char *) malloc(5 * sizeof(char));
strcpy(p3[0], "char");
printf("p1 = %s\np2[0] = %s\np3[0] = %s\n", p1, p2[0], p3[0]);
return 0;
}
El primer y el segundo funciona bien, y no tengo Entendido lo que hacen. ¿Cuál es el significado de la tercera declaración y la forma correcta de usarla?
¡Gracias!
Declaraciones de descodificación es mi parte menos favorita de C y C++. –