Retourner un tableau d'int dans une fonction [C] - C++ - Programmation
Marsh Posté le 09-08-2002 à 13:56:06
Poulou a écrit a écrit : Bonjour à tous, J'aimerai qu'une fonction retourne un tableau d'int du type : "int tab[4][6]". Evidemment ce n'est pas possible de faire un "int [4][6] nomfonction(..,...)" donc comment puis-je le réaliser ? Merci |
en renvoyant un poiteur genre int ** nomFonction(), ça devrai fonctionner.
Marsh Posté le 09-08-2002 à 14:07:13
tomlameche a écrit a écrit : en renvoyant un poiteur genre int ** nomFonction(), ça devrai fonctionner. |
Ouais, bien sur.
Par contre , n'éspères pas faire ça :
Code :
|
Quand tu déclares un tableau de cette manière, le pointeur TonTableau est constant.
Par contre tu peux faire :
Code :
|
Par la suite, j'pense que tu peux accèder aux différents éléments de hTonTableau comme si t'avais déclaré ton tableau en statique (avec les indices entre crochets quoi !)
Marsh Posté le 09-08-2002 à 14:10:31
El_Gringo a écrit a écrit : Ouais, bien sur. Par contre , n'éspères pas faire ça :
|
non ça passe pas. Y a une syntaxe particulière pour les pointeurs sur tableau multicolone (on en a déjà parlé ici) mais je sais plus laquelle
Marsh Posté le 09-08-2002 à 14:29:31
de toutes facons, un tableau [4][6] équivaut en mémoire a un tableau [24]
donc tu peux faire
Code :
|
evidemment essaye de pas faire d'erreur c la merde pour debugguer..
Marsh Posté le 09-08-2002 à 14:38:46
Sur les indications de letoii j'ai cherché un topic qui en parlait et effectivement c'est celui-ci :
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
J'ai donc dans ma fonction appelante :
déclaration : int (*tableau)[4][6]; |
et dans ma fonction appelée qui modifie le tableau
déclaration : fonction_appelée(int (*mon_tableau)[4][6]) |
Ca fonctionne sans problèmes et sans warning comme cela. Des remarques ?
Marsh Posté le 10-08-2002 à 05:50:02
Code :
|
Pour réellement pointer sur un tableau, il faut donc simuler un tableau fictif de 1 case le contenant.
On peut transmettre un tableau par valeur en argument/retour de fonction en l'englobant dans une structure:
Code :
|
Marsh Posté le 28-03-2014 à 10:45:01
Bonjour ;
Si vous voulez bien me donner une idée, en fait j'ai une question presque identique à celle_ci, et j'ai essayé d'appliquer vos consignes mais ça n'a pas marché !
Ma fonction K_eq contient une boucle for(i=1;i<=nnode;i++), qui me calcule un tableau des doubles. Or quand je fais appel à la fonction dans le main, je n'obtient que les valeurs d'une seule itération.
Objectif: quand je fais appel à la fonction K_eq, je dois récupérer toutes les valeurs de K_M=K_eq(i,1), toutes les valeurs de K_m=K_eq(i,2) et toutes les valeurs de K_geo=K_eq(i,3)=K_eq(i,4).
Cas1:normalement return ne récupère qu'une seule valeur, donc quand je l'ai mise dans la boucle, il m'affiche les valeurs de K_M, K_m et K_geo de la première itération et elle sort. Donc j'ai pensé à la faire sortir de la boucle.
Cas2:en dehors de la boucle, je sais pas quoi mettre entre les crochés de mon tableau K, si je mets return (K[i]), il m'affiche que des zéro (K_M=K_m=K_geo=0), et c'est normal car pour lui i en dehors de la boucle n'est qu'un simple entier. Si je mets la taille du tableau, c'est à dire je veux toutes les valeurs de mes paramètres return (K[nodmax]), il m'affiche la valeur moyenne de tous les K (K_M=K_m=K_geo=valeur moyenne).
J'espère que j'étais suffisamment claire pour que vous puissiez m'aider!
Merci
Marsh Posté le 29-03-2014 à 00:55:24
mwawm a écrit : Bonjour ; |
Je n'ai pas compris l'énoncé, le mieux serait de poster le code en plus.
Vu que la discussion traite de comment retourner un tableau 2D, voilà un exemple en C++ en espérant que ça pourra aider :
Code :
|
Marsh Posté le 01-04-2014 à 11:05:27
Bonjour
Merci de votre aide honrisse
C'est juste que je ne veux afficher qu'un vecteur!
Ma fonction contient deux arguments, le premier pour la boucle for et le deuxième pour que je choisisse le K que je veux, soit K_M=K_eq(i,1), ou K_m=K_eq(i,2) ou K_geo=K_eq(i,3)=K_eq(i,4).
J'ai réussi à calculer toutes les valeurs de mes K (nnode valeurs), mais quand je fais appel à la fonction dans le main, je n'obtient qu'une seule valeur pour tous les K! Je pense que cela provient de mon return(K[nodmax]), mais je n'y ai pas encore trouvé le remède
Voici la quasi totalité de mon code
Merci
Code :
|
Marsh Posté le 09-08-2002 à 13:46:54
Bonjour à tous,
J'aimerai qu'une fonction retourne un tableau d'int du type : "int tab[4][6]". Evidemment ce n'est pas possible de faire un "int [4][6] nomfonction(..,...)" donc comment puis-je le réaliser ?
Merci