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 :

Appeler une fonction avec parametre un vecteur


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Appeler une fonction avec parametre un vecteur
    Bonjour,
    Dans ce bout de code, j'ai passé un vecteur en argument lorsque j'appel ma fonction.
    Pourquoi ma fonction m'affiche 0,0 et non 10,19 ?
    Merci pour votre aide.

    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
    21
    22
    23
    24
    25
    26
    27
     
    #include <cstdlib>
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    void operation(vector<int>);
     
    int main() {
     
        vector<int> nombres(2);
     
        operation(nombres);
     
        for(auto element : nombres){
            cout << element << ", ";
        }
        cout << endl;
        return 0;
    }
     
    void operation(vector<int> addition)
    {
        addition.push_back(10);
        addition.push_back(19);
    }

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Tu passes ton paramètre par valeur, donc une copie est faite en entrant dans la fonction. Celle-ci travaille ensuite sur cette copie, qui sera détruite quand la fonction se termine. Ainsi, le vector utilisé dans la fonction main() n'est pas modifié.

    Il faut que tu passes une référence vers ton vector à ta fonction. Ainsi, elle ne travaillera pas sur une copie de ton vector, elle accèdera directement à celui-ci de ton main() et pourra ainsi le modifier.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Tu passes ton paramètre par valeur, donc une copie est faite en entrant dans la fonction. Celle-ci travaille ensuite sur cette copie, qui sera détruite quand la fonction se termine. Ainsi, le vector utilisé dans la fonction n'est pas modifié.

    Il faut que tu passes une référence vers ton vector à ta fonction. Ainsi, elle ne travaillera pas sur une copie de ton vector, elle accèdera directement à celui-ci de ton main() et pourra ainsi le modifier.
    Merci pour votre explication. Je commence à comprendre.

    Dans la définition de ma fonction, je mets &addition. Donc par référence c'est lorsque j'appel la fonction opération(nombres); dans le main, c'est comme si j'ai dit a nombre de se placer dans la même espace que se trouve la variable en paramétré addition ? Pouvez-vous me donner une explication s'il vous plait. Passage par reference est un peu flou pour moi; je comprend votre explication sur le passage par valeur, merci encore.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Merci à vous tous pour vos réponses.
    J'avance bien.

    A bientot.

Discussions similaires

  1. Appeler une fonction avec un tableau en parametre ?
    Par devoluti0n dans le forum C++
    Réponses: 9
    Dernier message: 11/04/2008, 16h21
  2. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  3. créer une fonction avec parametre optionnel
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2006, 20h51
  4. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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