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 :

references & argument de function & valeur de retour


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut references & argument de function & valeur de retour
    bonjour,
    Question 1 :

    Écrire une fonction qui prend un pointeur en argument (pointeur sur int par exemple), modifie ca valeure, et puis renvoie la destination de pointeur comme référence


    je ne comprend pas qu'est ce que je dois renvoyer ?

    Question 2 :
    soit la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void fct (const int& n)
    {
       //traitements  sur n
    }
     
     
    int main()
    {
       float p =3.0;
       fct(p);
       return 0;
    }
    Est ce que le compilateur va creer une copie de la variable effectif (p) pour permettre a la fonction fct de travailler dessus ou les 2 variables p et n vont pointer sur la meme emplacement memoire ?

    Merci pour votre aide

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Ci c'est vraiment cela l'énoncé, je ne comprend pas non plus. Mais si j'interprète un peu, je pense que c'est une fonction qui prend un pointeur en paramètre et qui renvoie une référence de ce pointeur.
    Donc par exemple
    Ton exercice fait suite à un cours sur les références et les pointeurs ?


    [EDIT]
    Du coup mon exemple tombe à l'eau, il faut renvoyer une référence vers l'int passé en paramètre.
    Je pense que si j'avais mieux lu ton énoncé je ne t'aurais pas dit n'importe quoi
    [/EDIT]

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    oui ,c'est un cours sur les references et les pointeur !! Et pour l'enoncé je l'ai traduit de l'anglais !

    Write a function that takes a pointer argument, modifies what the pointer points to, and then returns the destination of the pointer as a reference.


  4. #4
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Et en ce qui concerne la deuxieme question ?

    Merci

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ce sont des questions ridiculeusement simples.
    Il suffit de lire un livre de C++ deux minutes sur le chapitre des références pour connaître la réponse.

  6. #6
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Ben supposons que le paramètre n soit une copie (donc deux trucs différents) de f.
    1- Penses-tu que les modifications que tu va faire dans fct vont affecter f ?
    2- Penses-tu que le compilo va ensuite réaffecter à f la valeur de n lors de la sortie de fct ?

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par valefor
    Ben supposons que le paramètre n soit une copie (donc deux trucs différents) de f.
    1- Penses-tu que les modifications que tu va faire dans fct vont affecter f ?
    2- Penses-tu que le compilo va ensuite réaffecter à f la valeur de n lors de la sortie de fct ?
    Dans les 2 cas ,non. parceque l'argument est const. Moi je parle ici, de la facon que le compilateur va gerer la memoire.

    Merci pour loufoque pour ca reponse redicule. Si j'ai pose la question c'est parcequ'il y a une ambiguite et parceque j'ai lu des livres et je ne comprend pas, donc ce n'est pas redicule d'essayer de comprendre ,au contraire c redicule de rien comprendre.

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par loufoque
    Ce sont des questions ridiculeusement simples.
    Il suffit de lire un livre de C++ deux minutes sur le chapitre des références pour connaître la réponse.

    Merci pour ta reponse redicule.

    Mais si a ce point là , tu crois que ma question est rediculesement simple .

    Pouvez vous repondre a ma question SVP ?

  9. #9
    Membre à l'essai
    Profil pro
    Expert technique
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 20
    Points
    20
    Par défaut
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int& fct(int* bob)
    {
       return *bob;
    }
    2)Ce sera le même emplacement mémoire, vu que c'est une référence, mais tu ne pourras pas la modifier à cause du const.

  10. #10
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Effectivement le fait que l'argument soit const fait que à la sortie de fct rien aura changé pour f.

    Comme l'argument const ne change rien à la façon dont les paramètres vont être passés (du moins par rapport au fait qu'on passe tout l'objet ou une référence), repose toi la question avec un exemple où il n'y a pas de const. Et choisi les réponses les plus simples, ce sont celles que le compilo implémente en général.

    Dans ton cas le const ne sert à rien donc enlève le ou ne passe pas de référence mais directement l'int (cela n'alourdira pas le passage de paramètre parce qu'une référence à la même taille qu'un int).

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

Discussions similaires

  1. utilisation des references en argument
    Par zaboug dans le forum Langage
    Réponses: 5
    Dernier message: 16/01/2009, 10h56
  2. Incorrect number of arguments for FUNCTION
    Par Krusty22 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2008, 01h48
  3. [function][delphi]problème valeur de retour
    Par daheda dans le forum Delphi
    Réponses: 2
    Dernier message: 14/11/2006, 13h26
  4. Réponses: 4
    Dernier message: 10/04/2006, 22h30
  5. [Cinephiles][References] debat/argumentation
    Par neguib dans le forum Films & TV
    Réponses: 17
    Dernier message: 23/09/2005, 18h50

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