Allocation dynamique dans un sous programme
Résolu/Fermé
CherryBlondy
Messages postés
16
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
3 mars 2009
-
4 févr. 2009 à 10:49
CherryBlondy Messages postés 16 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 3 mars 2009 - 4 févr. 2009 à 21:30
CherryBlondy Messages postés 16 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 3 mars 2009 - 4 févr. 2009 à 21:30
A voir également:
- Allocation dynamique dans un sous programme
- Tableau croisé dynamique - Guide
- Fichier ouvert dans un autre programme - Guide
- Programme demarrage windows 10 - Guide
- Liste déroulante dynamique excel - Guide
- Desinstaller un programme - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
4 févr. 2009 à 13:49
4 févr. 2009 à 13:49
Salut,
J'ai pas tout lu mais il y a déjà une chose qui m'interpelle.
Si tu comptes modifier le pointeur terrain. Effectivement il faut passer par un pointeur sur la matrice donc ici, un triple pointeur. Par contre l'appel à la fonction est faux. Mets plutôt :
Ce qui signifie que tu envoies l'adresse du pointeur sur la matrice terrain. Et là tu pourras allouer le pointeur.
Pour la fonction d'initialisation,
suffira. Tu ne modifies pas le pointeur mais les cases de la matrice. Donc pas besoin d'un pointeur sur le pointeur de la matrice.
Et l'appel devient tout simplement :
Sinon, je n'ai pas vu les free, dans ton code. N'oublie pas de le faire, sinon tu auras des fuites mémoires.
Et enfin je t'ai vu utiliser : fflush(stdin);, et bien, cela ne doit pas être utilisé. La fonction fflush() à un comportement indéfini sur les entrées. Il faut utiliser à la place :
Cdlt
J'ai pas tout lu mais il y a déjà une chose qui m'interpelle.
char **terrain; //déclaration de terrain tailleterrain(&*terrain, &hauteur, &largeur); //appel void tailleterrain(char ***table, int *hauteur, int *largeur); //prototype
Si tu comptes modifier le pointeur terrain. Effectivement il faut passer par un pointeur sur la matrice donc ici, un triple pointeur. Par contre l'appel à la fonction est faux. Mets plutôt :
tailleterrain(&terrain, &hauteur, &largeur);
Ce qui signifie que tu envoies l'adresse du pointeur sur la matrice terrain. Et là tu pourras allouer le pointeur.
Pour la fonction d'initialisation,
void initialterrain(char **terrain,int hauteur,int largeur)
suffira. Tu ne modifies pas le pointeur mais les cases de la matrice. Donc pas besoin d'un pointeur sur le pointeur de la matrice.
Et l'appel devient tout simplement :
initialterrain(terrain, hauteur, largeur);
Sinon, je n'ai pas vu les free, dans ton code. N'oublie pas de le faire, sinon tu auras des fuites mémoires.
Et enfin je t'ai vu utiliser : fflush(stdin);, et bien, cela ne doit pas être utilisé. La fonction fflush() à un comportement indéfini sur les entrées. Il faut utiliser à la place :
int c; while((c=getchar())!='\n' && c!=EOF);
Cdlt
4 févr. 2009 à 21:30
et merci encore =)
bonne soirée