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 :

Pourquoi référencier les variables dans l'en-tete d'une fonction ?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Developpeur C++, lycéen.
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Developpeur C++, lycéen.

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Pourquoi référencier les variables dans l'en-tete d'une fonction ?
    Bonsoir chers developpeurs...
    C'est ma premiere participation dans developpez.com, il a l'air vraiment trés bien ce site avec plein de tutoriels, d'actualités, d'annonces, de topics...
    Bon, jettez un coup d'oeil sur ce petit programme :

    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
    #include <iostream>
    using namespace std;
    void echange(double a, double b)
    {
        double intermediaire;
        intermediaire = x;
        x = y;
        y = intermediaire;
    }
    int main()
    {
        double a, b;
        cout << "Tapez a :"; cin >> a;
        cout << "Tapez b :"; cin >> b;
        swap(a, b);
        cout << "a vaut : " << a << endl;
        cout << "b vaut : " << b << endl;
     
        return 0;
    }
    comme vous le constatez peut-etre, ce code est correct. Mais quand-meme il ne se compile pas... alors aprés tant de test j'ai essayer de referencier les deux variables locales dans l'en-tete de la fonction echange(), je veux dire ajouter un & entre le type et l'identificateur...Et, PAM! Sa fonctionne, quand meme je ne suis pas satisfait car ce n'est pas un programme tres utile.
    Alors ma question est la suivante: "Sa change quoi la reference d'une variable dans un en-tete de fonction ?"
    J'attend cette précieuse réponse...
    A plus tard les pros

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour et bienvenue sur le forum

    La réponse se' trouve dans la FAQ : Qu'est-ce qu'une référence ?

    Bonne lecture

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    Si votre code ne compile pas, c'est parce que les variables x et y de votre fonction "echange" ne sont pas définies.

  4. #4
    Membre actif Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Points : 281
    Points
    281
    Par défaut
    Je crois que le code a été refait de mémoire, ou alors a partir de copier/coller foireux. Il y a également une fonction echange qui est appellée avec swap. et en effet la fonction a comme paramètres a et b, et utilise x et y dans le corps. C'est normal que ca compile pas tel quel, avec ou sans références.

    Pour répondre vite fait au fond de la question sur les références, les deux sont possibles, mais ont des effets très différents, donc ta fonction est le meilleur exemple.
    Si tu utilises des variables normales, les valeurs sont copiées dans le corps de la fonction. Si tu modifies la valeur dans le corps de la fonction, la valeur originale (dans la fonction appellante) ne sera pas changée.
    Si tu utilies des références, modifier la variable dans la fonction va la modifier également dans la fonction appellante.
    Pour ta fonction échanger, c'est donc bien des références que tu veux. Car échanger deux variables locales à une fonction, ca sert pas a grand chose. Les références vont permettre de propager l'échange dans la fonction appellante.

    Par contre, la fonction swap écrite sans les référence devrait quand même compiler. Elle est juste inutile, tu le constateras à l'execution.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Developpeur C++, lycéen.
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Developpeur C++, lycéen.

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    C'est tout a fait la bonne réponse Rewpparo, ce que tu dis est du bout au bout logique, Merci pour vos réponses c'est trés sympa. A plus
    Si j'ai un autre problème je compterai sur vous pour le résoudre, merci une autre fois...

    Merci gbdivers, ce FAQ est tres complet j'aurai du jetté un coup d'oeil avant d'ouvrir la discussion

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Gérer les variables dans un fetch_object
    Par Ikaly dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2007, 15h00
  2. [Système] INCLUDE sans passer les variables dans l'URL
    Par bonjour69 dans le forum Langage
    Réponses: 9
    Dernier message: 07/10/2006, 01h20
  3. Récupérer les variables dans une popup
    Par Msieurduss dans le forum Langage
    Réponses: 4
    Dernier message: 21/08/2006, 20h05
  4. Réponses: 4
    Dernier message: 20/04/2006, 02h56
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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