cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008
-
4 juin 2008 à 21:36
cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008
-
5 juin 2008 à 17:42
Bonjour.
J'ai plusieurs tableaux déclarés en "globale" (juste avant le main) et j'aimerai leur allouer une taille variable, comme ceci:
tab1[MAX][300];
tab2[MAX1][300];
De tel façon que l'utilisateur puisse entrer par la suite MAX et MAX1 selon ses besoins.
Or ceci est impossible car il sont déclarés en globale: je doit donc leur allouer un MAX et un MAX1 bien précis avant le main, empechant ainsi l'utilisateur de les changer par la suite.
Bien entendu si j'ai déclaré les tableaux en global c'est que je n'avait pas le choix: si je les déclare juste au debut du main il se passe n'importe quoi dans mon programme, je trouve sa bizzare, vous avez une explication?
Ouvert à toutes propositions^^.
Merci.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 4 juin 2008 à 22:11
Salut
Tu ne peux pas contrôler la taille de tes tableaux si ces derniers sont déclarés statiquement. Dans ton cas MAX doit être un define ou un const int.
Ce que tu dois faire, c'est déclarer des pointeurs et passer par l'allocation dynamique.
int **tab; //tableau 2D et des new ou malloc pour l'allocation.
Cherche allocation dynamique sur internet et tu trouveras toutes les réponses.
cs_amentag
Messages postés13Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention 5 juin 2008 4 juin 2008 à 22:25
Merci d'avoir prit le temps de me repondre.
En effet les pointeurs semblent etre la solution à mon probleme^^(les pointeurs sont loin d'etre un reflexe chez moi...ce n'est pas très bien je sais^^).
Encore une chose: je n'ai jamais utilisé de pointeurs tableau, il s'ecrivent ainsi?:
char **tab[MAX][300];
char *tab1[MAX1][300];
et lors de l'utilisation:
**tab[MAX][300];
*tab1[MAX1][300];