J'apprenais C et j'ai rencontré un problème avec les structures.Tableau des pointeurs struct - overrides struct
Supposons que je la struct suivante:
typedef struct {
int x;
} Structure;
int main (void) {
Structure *structs[2];
for(int i = 0; i < 2; i++) {
Structure s = {i};
structs[i] = &s;
}
for(int i = 0; i < 2; i++) {
printf("%d\n", structs[i]->x);
}
return 1;
}
La sortie est:
1
1
Je ne comprends pas pourquoi la nouvelle structure est overring l'ancien.
Ce pourrait être un problème stupide. Mais je ne comprends pas.
Merci!
Résolu:
typedef struct {
int x;
} Structure;
int main (void) {
Structure *structs[2];
for(int i = 0; i < 2; i++) {
Structure *s = (Structure *)malloc(sizeof(Structure));
s->x = i;
structs[i] = s;
}
for(int i = 0; i < 2; i++) {
printf("%d\n", structs[i]->x);
free(structs[i]);
}
return 1;
}
Merci! Je l'ai! J'ai changé mon code pour utiliser le tas comme stockage. – user2221323