dans ma phase de (ré) apprentissage C, je suis souvent confronté à des problèmes de tableaux et de structures (et de pointeurs). C'est un petit test que j'ai écrit.C: Structs and array - vue d'ensemble et aide nécessaire
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char name[10];
} man;
int main (int argc, const char * argv[]) {
int i;
man john;
strcpy(john.name, "john");
// array of structures
man men[10];
strcpy(men[3].name, "john");
printf("*** %s ***\n", men[3].name);
// dynamic array of structures
man *men2;
men2 = malloc(10 * sizeof(man));
strcpy(men2[3].name, "john");
printf("*** %s ***\n", men2[3].name);
// multidimensional array of structures
man men3[10][10];
strcpy(men3[3][3].name, "john");
printf("*** %s ***\n", men3[3][3].name);
// dynamic multidimensional array of structures
man **men4;
men4 = malloc(10 * sizeof(man*));
for (i = 0; i < 10; i++)
men4[i] = malloc(10 * sizeof(man*));
strcpy(men4[3][3].name, "john");
printf("*** %s ***\n", men4[3][3].name);
// array of pointer to structure
man *men5[10];
men5[3] = &john;
printf("*** %s ***\n", men5[3]->name);
// dynamic array of pointers to structure
man **men6;
men6 = malloc(10 * sizeof(*men6));
men6[3] = &john;
printf("*** %s ***\n", men6[3]->name);
// dynamic multidimensional array of pointers to structures
/* ? */
return 0;
}
Pouvez-vous:
- me dire si tout est correct
- expliquer pourquoi hommes4 j'utilise
sizeof(man*)
mais hommes6 il estsizeof(*men6)
(position astérisque) - expliquer comment faire tableau multidimensionnel dynamique de pointeurs vers des structures (dernier point)
- Expliquez-moi men4? cela fonctionne, mais il me semble plus d'un tableau de pointeurs à structure qu'un tableau multidimensionnel de structures!
Merci d'avance.