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 :

Reference sur la destination d'un pointeur


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut Reference sur la destination d'un pointeur
    Bien le bonjour !

    Je suis toujours en train d'écumer Penser en C++ et, une fois n'est pas
    coutume : je plante sur un exercice plutôt tordu pour le débutant en références que je suis

    Voilà l'énoncé :
    Ecrivez une fonction qui prend un pointeur comme argument, modifie ce vers quoi il pointe, puis renvoie la
    destination du pointeur en tant que référence.
    Je ne me suis pas embêté à faire une fonction ultra-longue : c'est une mise au carré simple d'une valeur entrée dans la fonction via pointeur.
    C'est au niveau de la sortie que ça bloque : j'arrive à sortir des int** durant mes essais, y'a manifestement des problèmes avec la définition de la référence de sortie.
    J'ai essayé de mettre des const mais ça me génère plus de problèmes que ça ne m'en règle.

    Je vous laisse constater par vous même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void carre(int& refX){
        refX = refX*refX;
    }
     
    int main(){
        int valeur = 4;
        int& refSeule = valeur;
        int x = 7;
        //int& rX = x;
        refSeule = x;
        carre(refSeule);
        cout << x << "\t" << valeur  ;
        return 0;
    }
    Merci d'avance pour vos avis avisés

  2. #2
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Bonjour,
    Ce que je peux dire pour l'instant, c'est que ton code ne me donne pas du tout l'impression de se rapprocher de la solution.

    On te demande de créer une fonction, on te donne ses arguments, on te donne ce qu'elle retourne.
    Autrement dit, on te donne sa signature.
    Commence déjà par là.

    L'étape suivante consiste à déterminer comment passer d'un pointeur à la valeur, d'un pointeur à une référence, d'une valeur à une référence, et vice-versa.
    Ce doit forcément être marqué quelque part dans ton bouquin , à défaut la F.A.Q. est là.

    Je ne vois pas comment t'aider plus sans te donner la solution.
    Mais si tu n'y arrives vraiment pas, je suis certain qu'une âme charitable te la fournira, avec des commentaires pertinents.

    Bon courage !

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void carre(int& refX){
        refX = refX*refX;
    }
    Ecrivez une fonction qui prend un pointeur comme argument
    Tu as bien un argument, mais ce n'est pas un pointeur, c'est une référence.

    modifie ce vers quoi il pointe
    Un chose basique qui est forcement écrit dans les premières pages de ton cours sur les pointeurs!

    puis renvoie la
    destination du pointeur en tant que référence.
    Ton retour de fonction est void... Tu ne retourne rien. Tu dois donner un type à ta fonction, qui est son type de retour. Tu retourne des valeurs avec le mot clé "return" comme tu le fais dans le main avec ton "return 0;", tu vois bien que le main retourne un entier avec sa signature "int main()".

    J'ai essayé de mettre des const mais ça me génère plus de problèmes que ça ne m'en règle.
    Passer une référence constante t'interdira de la modifier dans la fonction. Mais ici ont te demande de passer un pointeur et de le modifié, puis de retourner ce vers quoi il pointe.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    En effet, ce code ne se rapproche PAS DU TOUT de la solution...
    C'est un peu normal car j'ai posté le mauvais bout de code ( c'est une autre question )

    Voila le vrai code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int& carre(int* ptrX){
        int& refPtrX = (*ptrX);
        (*ptrX) = (*ptrX)*(*ptrX);
        return refPtrX;
    }
     
    int main(){
        int X = 7;
        int destination = carre(&X);
        cout << X << "\t" << destination <<endl;
        return 0;
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ce code affiche bien 49 49 ?

  6. #6
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Oui, cela me semble bien.
    Et ça fonctionne chez moi !

    Alors où est le problème ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Ah bon ? Bon ...
    J'avais réussi à obtenir ce 49 49 mais ce n'était pas ce que je cherchais, j'avais ( mal ) compris l'énoncé et je cherchait à ressortir via la variable destination l'adresse de la valeur pointée.

    Bref ... j'ai réussi à faire ce que l'énoncé demande mais pas ce que je cherchais

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

Discussions similaires

  1. reference sur pointeur
    Par buzzkaido dans le forum C++
    Réponses: 10
    Dernier message: 15/06/2009, 15h51
  2. Erreur sur l'affection d'un pointeur
    Par digital prophecy dans le forum C
    Réponses: 4
    Dernier message: 25/11/2005, 09h07
  3. Pb reference sur une globale inutilisée (VC6)
    Par symmenthical dans le forum MFC
    Réponses: 1
    Dernier message: 11/05/2005, 21h35
  4. Probleme heritage : References sur la table parente
    Par Belgar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/05/2005, 22h11
  5. reference sur un objet
    Par romeo9423 dans le forum C++
    Réponses: 5
    Dernier message: 16/02/2005, 21h53

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