Se connecter avec
S'enregistrer | Connectez-vous

tableau à 2 dimensions en C++

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

Salut
une fonction ne peux renvoyer un tableau !!
Mais le tableau s appel par adresse donc tu passe le tableau a ta fonction tu le modifie et les modifications sont effectuer sur le tableau direct !!!!

Bon je viens de me relire je suis pas clair mais la je suis crevé donc attend le passage de cricky sur le forum et tu aura une réponse clair!!

ps: si tu as compris tant mieux c'est ce que je pouvais faire de mieux tellement je suis crevé!

Soit tu passes le tableau en argument à la fonction, soit la fonction renvoie un pointeur vers ce tableau.


int ** ma fonction (); // il n'aime pas non plus int [][] ma fonction ();
ca ne marche pas parce que le compilateur doit connaître la taille du tableau pour réserver l'espace en mémoire

et n'oublie pas le void dans le prototype et la déclaration de la fonction :
int ** ma fonction ( void );

ca m'étonnerait que int tab [w][h] fonctionne parce que le compilateur là aussi ne connait pas la taille à allouer en mémoire. Si tu veux des dimensions définies à l'éxécution il faut faire une allocation dynamique

salut,

plusieurs problèmes dans ce que tu souhaites faire :

  1. int ** ma fonction()
  2. {
  3. int tab [w][h];
  4. return tab;
  5. }

comme on te l'a dit, à moins que w et h soit des définitions ou des constantes ça ne marchera pas(#define w, ou const int w ...).
De plus ton tableau tab est défini en local dans ta fonction "fonction", renvoyer un pointeur n'a aucun sens puisque ce tableau n'existe plus dès que l'on sort de cette fonction.
Imaginons cependant que ton tableau soit global et que tu veuilles le retourner par une fonction ...
Alors le code suivant est tout a fait valide.
  1. const int w=5,h=6;
  2. int tab[w][h];
  3. int ** toto (void);
  4. int ** toto(void)
  5. {
  6. tab[2][3]=5;
  7. return (int**)tab;
  8. }
  9. int main(int argc, char *argv[])
  10. {
  11. int **piTab=toto();
  12. }


A moins que tu ne sois contraint de renvoyer un tableau, le mieux reste de passer ce tableau par réference à la fontion qui doit la modifier.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde