Renvoie detableau en c
Résolu
bennaniidriss
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Renvoie detableau en c
- Vers quelle adresse web renvoie ce lien - Guide
- Renvoie d'appel ooredoo ✓ - Forum telephonie fixe
- Recherchev ne renvoie pas la bonne valeur ✓ - Forum Excel
- Comment savoir si l'appel reçu est un renvoi d'appel ? - Forum Téléphones & tablettes Android
- Recherchev renvoie 0 ✓ - Forum Excel
1 réponse
S'il s'agit d'un tableau statique du genre:
char tableau[100];
Ben ça dépend. Si ce tableau est déclaré dans la fonction, tu ne peux pas le retourner avec return, car ce tableau est une donnée locale.
En revanche s'il le tableau est passé en paramètre de la fonction, tu peux sans doute le retourner avec return (mais bon, si tu le mets en paramètre, tu n'as pas besoin de le retourner.
Je m'explique:
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:
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:
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 tableau[100];
Ben ça dépend. Si ce tableau est déclaré dans la fonction, tu ne peux pas le retourner avec return, car ce tableau est une donnée locale.
En revanche s'il le tableau est passé en paramètre de la fonction, tu peux sans doute le retourner avec return (mais bon, si tu le mets en paramètre, tu n'as pas besoin de le retourner.
Je m'explique:
//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; }
J'ai le même souci, je cherche à créer une fonction qui renvoie ou qui modifie un tableau j'ai testé les bouts de code ci dessus mais ça ne fonctionne pas !
Crée un nouveau sujet, avec ton code et ta question (mets le code entre balises "code", en cliquant sur le bouton "< >" à droite du bouton de soulignement).
Dal