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 :

fonctions en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut fonctions en C
    Bonjour, j'aimerais savoir s'il est possible de faire une fonction qui renvoie 2 éléments. Si oui comment il faut faire.

    Merci.

  2. #2
    Membre chevronné Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Par défaut
    une fonction ne peut renvoyer qu'une seule valeur
    a partir de la plusieurs solutions sont possibles :
    1 - retourner un pointeur vers une structure qui contient les 2 valeurs que tu veux
    2 - passer des pointeurs vers ces 2 variables en parametre de la fonction et modifier les valeurs pointees dans la fonction

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par straasha
    une fonction ne peut renvoyer qu'une seule valeur
    a partir de la plusieurs solutions sont possibles :
    1 - retourner un pointeur vers une structure qui contient les 2 valeurs que tu veux
    2 - passer des pointeurs vers ces 2 variables en parametre de la fonction et modifier les valeurs pointees dans la fonction
    Soit c'est vrai mais une fonction peut aussi retourner la structure directement et du coup, tu auras tes deux éléments.

    Par contre,

    - C'est déconseillé car cela est très coûteux
    -> C'est donc quelque chose que personne de sérieux ne ferait...

    Tu peux aussi passer le pointeur vers la structure à remplir.

    Jc

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Beaucoup moins joli mais qui fonctionne également, un pointeur ainsi qu'une instruction return,...

  5. #5
    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 sandball22
    Bonjour, j'aimerais savoir s'il est possible de faire une fonction qui renvoie 2 éléments. Si oui comment il faut faire.
    C'est possible en retournant une structure, mais on évite, car ça fait des copies inutiles. (Mais il y a des exemples dans la bibliothèque standard du C : div(), idiv().)

    La bonne solution est de définir une structure 'resultat', d'en instancier une (une variable locale suffit en général) et de passer son adresse à la fonction en mode lecture/ecriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int f (struct resutat *p)
    Il est d'usage que la fonction retourne un etat (0=OK, 1=ERR) pour indiquer si les résultats sont valides.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    a moins que ce que tu veuilles dire soit :

    une fonction qui ressort 2 valeurs (et non pas retourne), auquel cas bien sûr que c'est possible...

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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