SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 nov. 2007 à 18:18
N'essaierais tu pas, par hasard, de retourner une variable locale ? Si c'est le cas, ne t'étonne pas si ça ne fonctionne pas. Un variable locale est "éffacé" au retour de la fonction.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 nov. 2007 à 18:21
Ah et aussi, tab = valeur est impossible. On ne peut pas assigner une valeur à un tableau en entier. tab devra être un pointeur (ou pointeur de pointeurs dans ton cas) pour pointer sur la zone mémoire renvoyé par la fonction.
titof3812
Messages postés18Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention12 décembre 2007 27 nov. 2007 à 18:24
si tu veux recuperer un tableau de double il faut que tu retourne un pointeur sur une zone memoire que tu aloue dans ta fonction e que tu libere par la suite.
tu doit retourner un char *
Vous n’avez pas trouvé la réponse que vous recherchez ?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 27 nov. 2007 à 20:19
Un snippet, c'est un bout de code que l'on peut réutiliser dans ses codes.
La solution est d'allouer la mémoire dynamiquement et de renvoyer le pointeurs. TableauDeDouble sera alors un pointeur de pointeurs double (double**).
Une autre solution est d'allouer la mémoire en dehors et de passer l'adresse en paramètre de ta méthode. Tu ne seras, ainsi, pas obligé de faire appel à new et delete.
Sinon, ça fera, au moins, un code bien plus clair.
Si tu n'as rien compris de ce que je vien d'expliquer, inutile d'aller plus loin. Ouvre un livre de C++ et essais de bien maitriser les concepts de mémoire et pointeurs (qui sont d'ailleurs très lié) avant.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 28 nov. 2007 à 00:45
Bon deja, donnes nous un peu plus de code, car on y comprend rien.
Deuxième point, faut pas écouter tout ce qu'on te dit. Un tableau de double alloué dans une fonction, ca se retourne au type (double*). 3 solutions plus ou moins élégantes selon les gouts pour retourner un tableau 1D de double.
En C/C++:
double * RetourneDouble(int _n)
{
double * mon_tableau = new double[n];
return mon_tableau;
}
En C/C++:
void RetourneDouble(double ** _ptr, int _n)
{
*_ptr = new double[_n];
}
En C++ uniquement:
void RetourneDouble(double * & _ptr)
{
_ptr = new double[_n];
}
Un tableau 2D de N*P double, c'est un tableau 1D de N*P cases:
double * RetourneTableau2D(int largeur, int longueur)
{
double * mon_tableau_2D = new double[largeur*longueur];
mon_tableau_2D[0 * longueur + 0] = 0.0; // <=> point (0,0) du tableau
mon_tableau_2D[1 * longueur + 2] = 0.0; // <=> point (2,1) du tableau