|
|
|
|
Bonjour,
tout dabord je voudrais remercier toutes les personnes qui ont bien voulu repondre a mes messages car sa ma beaucoup aidé surtout que je suis un debutant .
ce que je voudrais savoir c'est comment je pourais faire pour qu'un fonction renvoie un tableau de données
par exemple j'ai une fonction qui remplie un tableau avec des entier puis je voudrai en suite qu'une autre fonction qui faie le tri de ce dernier le reçoit comme parametre alors la preumiere fonction(qui fais le remplissage) dois renvoyer le tableau une foie remplie et c'est ce que je ne metrise pas .
j'espere que j'ai ete claire et que je vais recevoir des reponses le plus vite possible car c'est tres urgent et merci d'avance
a bientot
S'il s'agit d'un tableau statique du genre:
//Ca tu peux le faire
char *machin(char tableau[100])
{
return tableau;
}
//Ca tu n'as pas le droit, car tableau est local à la fonction
char *machin()
{
char tableau[100];
return tableau;
}
Si tu dois déclarer ce tableau dans ta fonction, alors utilise un tableau dynamique avec malloc ou calloc. Les tableaux dynamiques sont stockés dans un espace memoire qui n'est pa le même et ne sont pas detruits à la fin de la fonction. Mais si tu utilises un tableau que tu doit modifier dans une fonction, ça me semble plus pratique de faire: int machin(char tableau[100])
{
if (tout s'est bien passé){
return 0;
}
else{
return -1;
}
}
Dis toi qu'avec ça, si ta fonction retoune 0 alors ton tableau a bien été modifié. Et tu as forcément encore accés a ton tableau puisque tu viens t'appeler cette fonction en mettant le tableau en paramètre: int main(int argc, char **argv)
{
char bidule[100];
if ( ! machin(bidule) ){
/* bidule a bien été modifié, et tu y as encore accés
donc ça ne sert à rien de le mettre en valeur de retour de machin
*/
}
return 0;
}
Par contre ca sert de le mettre en valeur de retour dans le cas d'un tableau dynamique alloué à l'intérieur d'une fonction (puisqu'il te faut un pointeur vers cet espace memoire): char *machin()
{
char *truc;
truc=(char *)malloc(100);
return truc;
}
int main(int argc, char **argv)
{
char *bidule;
bidule=machin();
//Ne pas oublier de libérer l'espace alloué pointé par bidule plus tard.
return 0;
}
|