BsEtZeOpLhD
Messages postés61Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention29 juin 2005
-
15 mars 2005 à 23:28
BsEtZeOpLhD
Messages postés61Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention29 juin 2005
-
16 mars 2005 à 18:50
Bonjours,
Voila mon problème : je n'arrive pas à passer une tableau a 2
dimensions en paramètre. Est ce que quelqu'un sais comment faire ? Merci
asmanur
Messages postés230Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 4 août 2005 16 mars 2005 à 07:36
Tes prototypes ne sont pas disons "conforme"
Au lieu de
void FillTab( int nTab[][ITEM_SIZE], unsigned uNbItem )
tu devrais mettre
void FillTab( int** nTab, unsigned uNbItem )
Ca correspond exactement à la meme chose car le C++ ne passe pas de
tableau comme arguments il passe juste des pointeurs
a+
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 16 mars 2005 à 09:22
NitRic : ta notation ne permet de passer que des tableaux avec la même taille
asmanur : ta notation ne permet pas de passer des tableaux statiques (uniquement des tableaux dynamiques.
=> Conclusion : les 2 notations ne sont absolument pas les même (que ce soit en C ou C++), et dépendent de l'utilisation mais sont toutes les 2 "conformes".
* une déclaration du genre :
int tab[32][16];
=> tab est un pointeur simple sur une zone mémoire contenant 32*16 entiers que l'on dit être un tableaux à 2 dimensions. Pour le passer en paramètres une seule des dimensions peut être inconnue (la première), les autres doivent être données au compilo. La première doit être passé en param sup pour connaître la taille.
void PrintTab( int nTab[][16], int dim1 )
PrintTab(tab, 32);
* une décalrartion du genre:
int** tab;
tab = new int*[32];
for(int i = 0; i < 32; i++)
tab[i] = new int[16];
=> tab est un tableau dynamique à 2 dimensions (en fait un tableau de tableaux d'o^le double pointeur). les sous-tableaux ne se suivent pas forcément en mémoire (contrairement aux tableaux statiques). Il faut donc passer en param au compilo les 2 dimensions.
void PrintTab( int** nTab, int dim1, int dim2)
PrintTab(tab, 32, 16);