Initialisation d'un pointeur dans une struct
ColonelHati
-
Jolkdarr -
Jolkdarr -
typedef struct Fourmi{
int *liste;
int *memoire;
int position;
}fourmi;
Mes fourmis étant placées dans un tableau initialisé comme ceci:
fourmiliere = (fourmi *) calloc (nbFourmis, sizeof(fourmi));
if (fourmiliere==NULL){
printf ("Problèmes lors de l'allocation de mémoire pour la fourmiliere... \n");
exit(EXIT_FAILURE);
}
J'ai créé une fonction dans laquelle je souhaiterais faire un calloc pour initialiser memoire de chacune de mes fourmis:
void creationFourmis(fourmi *fourmiliere, int nbFourmis, int nbVilles){
int i;
for (i=0; i<nbFourmis; i++){
(fourmiliere+i)->memoire = (int *) calloc (nbVilles, sizeof(int));
if(memoire==NULL){
printf ("Problèmes lors de l'allocation de mémoire pour la memoire... \n");
exit(EXIT_FAILURE);
}
}
}
Mais le compilateur me dit: " Symbole 'memoire' non défini dans la fonction creationFourmis en ligne 64 ", je ne comprend pas pourquoi...
Merci d'avance
int *liste;
int *memoire;
int position;
}fourmi;
Mes fourmis étant placées dans un tableau initialisé comme ceci:
fourmiliere = (fourmi *) calloc (nbFourmis, sizeof(fourmi));
if (fourmiliere==NULL){
printf ("Problèmes lors de l'allocation de mémoire pour la fourmiliere... \n");
exit(EXIT_FAILURE);
}
J'ai créé une fonction dans laquelle je souhaiterais faire un calloc pour initialiser memoire de chacune de mes fourmis:
void creationFourmis(fourmi *fourmiliere, int nbFourmis, int nbVilles){
int i;
for (i=0; i<nbFourmis; i++){
(fourmiliere+i)->memoire = (int *) calloc (nbVilles, sizeof(int));
if(memoire==NULL){
printf ("Problèmes lors de l'allocation de mémoire pour la memoire... \n");
exit(EXIT_FAILURE);
}
}
}
Mais le compilateur me dit: " Symbole 'memoire' non défini dans la fonction creationFourmis en ligne 64 ", je ne comprend pas pourquoi...
Merci d'avance
A voir également:
- Initialisation d'un pointeur dans une struct
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Erreur d'initialisation de l'application adobe reader ✓ - Forum Téléchargement
- L'initialisation du rockstar games launcher a échoué ✓ - Forum Jeux PC
- L'initialisation du rockstar game launcher a échoué - Forum Jeux PC
3 réponses
salut,
dans le cas des structures,
il vaut mieux mettre des tableaux statiques à l'intérieur
int tableau[50]; par exemple au lieu de int *tableau.
pour cela, il faut connaitre à l'avance la taille du tableau,
on pourra en deduire la taille de la structure.
le malloc (ou new) se fera sur la structure complète.
(une fois qu'on connait sa taille)
Le contenu d'une structure c'est un peu rigide, mais le nombre d'éléments de structure, lui, est dynamique.
Toutes les autres solutions sont très délicates à gérer.
D'ailleurs, on utilise des classes pour faire du contenu dynamique,
c'est à dire de l'objet (avec un constructeur et un destructeur)
¤
dans le cas des structures,
il vaut mieux mettre des tableaux statiques à l'intérieur
int tableau[50]; par exemple au lieu de int *tableau.
pour cela, il faut connaitre à l'avance la taille du tableau,
on pourra en deduire la taille de la structure.
le malloc (ou new) se fera sur la structure complète.
(une fois qu'on connait sa taille)
Le contenu d'une structure c'est un peu rigide, mais le nombre d'éléments de structure, lui, est dynamique.
Toutes les autres solutions sont très délicates à gérer.
D'ailleurs, on utilise des classes pour faire du contenu dynamique,
c'est à dire de l'objet (avec un constructeur et un destructeur)
¤