IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Sortie de fonction


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut Sortie de fonction
    Voila,

    j'aurais aimé savoir si il était possible de faire sortir plus d'une valeur d'une fonction ( à part le return), et comment faire dans ce cas

    D'avance merci

  2. #2
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Slt,

    je ne comprends pas.
    avec le return su peux faire sortir plusieurs valeur d'une fonction.
    il suffit de revoyer un tableau du type de valeur que tu veux renvoyer ou une structure.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    Ou encore mieux, utiliser des pointeurs que tu passes en argument de ta fonction !

  4. #4
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut
    c'était pour sortir 2 valeurs indépendantes que je determine dans ma fonction

    Je vais voir si je peux les mettre dans une structure

    par contre ce serait un truc du style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef
    {
    char *valeur1;
    int    i;
    } youhou;
     
    youhou  ma_fonction();

  5. #5
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Ben sinon comme l'a dit yobbas tu peux utiliser les pointeurs en parametre. C'est plus facile a manipuler et pas besoin de faire de structure.

  6. #6
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    par contre ce serait un truc du style ?
    Code :
    typedef struct
    {
    char *valeur1;
    int i;
    } youhou;

    youhou ma_fonction();[/LEFT]
    Oui ca ressemblerait a ca.

  7. #7
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Il est préférable de faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    typedef struct{
        int a;
        int b;
    } s_MYSTRUCT;
     
    void myfunc(s_MYSTRUCT *st)
    {
        st->a = 1;
        st->b = 2;
    }
     
    int main(void)
    {
        s_MYSTRUCT s;
        [...]
        myfunc(&s);
        [...]
     
        return 0;
    }

  8. #8
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par fumiste972
    Oui ca ressemblerait a ca.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     typedef struct
    {
    char *valeur1;
    int i;
    } youhou;
     
    youhou ma_fonction();
    Cette méthode n'est pas très efficace. Il est préferable de retourner un pointeur sur la structure.Mais dans ce cas, il faudra faire une allocation dynamique dans la fonction appelée.

  9. #9
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut
    Merci beaucoup

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Lolita59
    j'aurais aimé savoir si il était possible de faire sortir plus d'une valeur d'une fonction ( à part le return), et comment faire dans ce cas
    Non. Pour faire ça, on utilse un tableau ou une structure dont on passe l'adresse (du premier élément si c'est un tableau) en paramètre.

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par fumiste972
    avec le return su peux faire sortir plusieurs valeur d'une fonction. il suffit de revoyer un tableau
    Impossible en C.

    http://emmanuel-delahaye.developpez.....htm#param_tab

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Lolita59
    c'était pour sortir 2 valeurs indépendantes que je determine dans ma fonction

    Je vais voir si je peux les mettre dans une structure

    par contre ce serait un truc du style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct
    {
       char *valeur1;
       int    i;
    } youhou;
     
    youhou  ma_fonction();
    On peut faire ça,oui, si la structure est petite (un ou deux int). En principe, on préfère passer/retourner l'adresse de la structure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    youhou  *ma_fonction(void);
    void ma_fonction(youhou  *);

  13. #13
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Effectivement il vaut mieux ne pas retourner de structure dans une fonction et utiliser un pointeur passe en parametre.

  14. #14
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut
    Ou bien on demande à un castor de le faire. Parce que c'est fort un castor quand même

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Lolita59
    Ou bien on demande à un castor de le faire. Parce que c'est fort un castor quand même
    Bah, si tu savais pourquoi les castors ont la queue plate, tu verrais qu'ils ne sont pas si forts que ça !

  16. #16
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Bah, si tu savais pourquoi les castors ont la queue plate, tu verrais qu'ils ne sont pas si forts que ça !
    Là, il faut que tu ailles jusqu'au bout ...
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Trap D
    Là, il faut que tu ailles jusqu'au bout ...
    Non merci, demande çà aux canards !
    à force de se faire sucer par les canards...

  18. #18
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 50
    Par défaut
    si tous les hommes étaient capables de construire leur maison avec leur queue, ça donnerait aux femmes une raison réelle de compter sur eux.

    Le castor sait y faire lui

  19. #19
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Lolita59
    Le castor sait y faire lui
    Bah, la queue du castor n'a rien à voir. C'est plutôt ses dents et ses petits bras musclés...

    J'ai l'impression qu'on est légèrement hors sujet et qu'on va finir à la taverne...

  20. #20
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ben là, on est vraiment sorti de la fonction
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Perte de données en sortie de fonction
    Par sythpen dans le forum C++
    Réponses: 26
    Dernier message: 16/03/2011, 14h22
  2. Fuite mémoire en sortie de fonction
    Par lappeldupeuple dans le forum C
    Réponses: 9
    Dernier message: 23/07/2010, 14h29
  3. Pointeur générique comme sortie de fonction ?
    Par wilval dans le forum Débuter
    Réponses: 3
    Dernier message: 16/02/2010, 10h09
  4. Problème de variables entrée/sortie de fonctions
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 11
    Dernier message: 13/06/2007, 12h22
  5. Réponses: 5
    Dernier message: 21/03/2006, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo