Retourner un vecteur se trouvant dans une fonction
did2604
Messages postés29Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention19 août 2008
-
27 nov. 2003 à 20:26
did2604
Messages postés29Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention19 août 2008
-
27 nov. 2003 à 22:07
Bonsoir,
J'ai une fonction qui traite les élements d'un tableau (t) et les met dans un vecteur (v2). Une fois cela fait, je demande à ce que les valeurs contenues dans le vecteur soient retournées au programme pour un nouveau traitement ultérieur et je quitte la fonction. Voici en simplifié (juste le prototype et la fonction) le programme. L'erreur qu'il me retourne est : see declaration of 'write_vec' :
___________________________________________________
void write_vec (int *,int *);
-----
-----
-----
void write_vec (int *t,int *v2)
{
int c,l,u,vt2;
for (c=0,vt2=0,u=0;c<10;c++)
{
for (l=0;l<100;l++)
{
if (*(t+l*10+c)!=VNUL)
{ v2[u]=*(t+l*10+c);
u=u+1; vt2++;
}
}
}
return (*v2,vt2);
}
___________________________________________________
Bon, je me doute bien que le problème vient du protocole, ce n'est pas "void write_vec (int *,int *);" mais par exemple "int write_vec (int *,int *);" si je retourne des int. Mais il n'en veut pas (ce sont des entiers dans le vecteur). Que dois-je exactement utilisé dans mon prototype ?
Merci d'avance. Si je n'ai pas été clair assez, n'hésitez pas à me le signaler.
did2604
Messages postés29Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention19 août 2008 27 nov. 2003 à 20:48
Merci pour ta réponse :)
Si je retourne rien, je n'ai pas d'erreur, mais je n'ai pas de résultat non-plus, car le vecteur v2 ainsi que la variable vt2, je les réutilise par après dans mon programme (en fait dans une autre fonction), donc j'en ai bien besoin ?! :question)
J'ai le code source complet à disposition sur http://didier2604.free.fr/ dans /sources C/dossiers/dossier04.cpp si mes explications ne sont pas très claires :) (attention, version beta ;-))
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2003 à 21:23
Bon cette fois j'ai regarde, en fait tu as juste besoin de retourner vt2 var le pointeur v2 est lui immuable donc connu de l'appelant.
Devient donc:
int write_vec (int *t,int *v2)
{
int c,l,u,vt2 = 0;
for(c=0,u=0;c<10;c++) {
for (l=0;l<100;l++) {
if(*(t+l*10+c)!=VNUL) {v2[u]=*(t+l*10+c); u++; vt2++;}
}
}
return vt2;
}