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 :

Exercice pointeur en c++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    1
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Par d�faut Exercice pointeur en c++
    Bonjour,
    je suis une d�butante, j'ai trouv� un exercice sur les pointeurs et j'avoue avoir beaucoup de mal � comprendre le principe .
    quelqu'un peut-il me donner la correction de cet exercice? :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void main() {
    int a=1;int b= -2; int c = 0;
    ajouet(a,b,c);
    cout <<"c=" << c << "/n";
    }
    1/
    donner la sortie du programme dans les cas suivants :
    void ajouter(int a,int b,int c) {c= a+b ;}
    void ajouter(int a,int b,int *c) {*c= a+b ;}
    void ajouter(int a,int b,int &c) {c= a+b ;}

    Comment s'appelle ces 3 passages de param�tres?
    Merci pour votre aide .

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    1 299
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 299
    Par d�faut
    Salut,

    bienvenue sur ce forum. Quand tu passes un param�tre � une fonction, tu as 2 possibilit�s : passage par valeur (donc le param�tre n'est pas modifiable) et par r�f�rence (donc le param�tre est modifiable)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    void ajouter(int a,int b,int c) {c= a+b ;}
    void ajouter(int a,int b,int *c) {*c= a+b ;}
    void ajouter(int a,int b,int &c) {c= a+b ;}
    dans le 1e cas, c n'est pas modifi�, dans les 2 autres cas c sera modifi�.
    Dans le 1e cas, c est pass� par valeur, dans le 2e on a un pointeur sur c et dans le 3e on a une r�f�rence sur c

    Je te laisse potasser un peu plus les pointeurs et les r�f�rences. Ce sont des notions tr�s importantes si tu veux faire du C++. Regarde aussi le mot-cl� "const" qui est tr�s utilis� avec les r�f�rences.

    Dernier point, ce n'est pas

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    void main()
    {
     
    }
    mais

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    int main()
    {
     
      return 0;
    }
    ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    int main(int nargin, char ** argc)
    {
     
      return 0;
    }

  3. #3
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut, et bienvenue sur le forume
    Citation Envoy� par salseropom Voir le message
    <snip>...
    ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    int main(int nargin, char ** argc)
    {
     
      return 0;
    }
    A vrai dire, bien que le nom des param�tres soit tout � fait libre, on utilise g�n�ralement
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int main (int argc, char argv)
    • argc �tant l'abr�viation de "argument count"
    • argv etant l'abr�viation de "argument values"


    Ceci dit, pour compl�ter un peu la r�ponse de salseropom, je voudrais attirer ton attention sur le fait que, en C++, on pr�f�re n'utiliser les pointeurs que lorsque l'on n'a vraiment pas le choix, car ils sont tr�s fortement associ�s au ph�nom�ne de la gestion dynamique de la m�moire et � tous les probl�mes que ce ph�nom�ne sous-entend.

    Et, surtout, d'�viter le recours � l'op�rateur "address of" afin de permettre le passage d'un pointeur � une fonction.

    Les r�f�rences ont en effet quelques avantages par rapport aux pointeurs, dont:
    • la garantie de non nullit� : un pointeur devant �tre nul, tu dois v�rifier qu'il ne le soit pas avant d'essayer d'acc�der � l'objet point�... cette contrainte n'existe pas avec les r�f�rences
    • le respect de la syntaxe "classique": avec les pointeurs, tu dois utiliser la fleche "->" ou explicitement dire que tu veux acc�der � "ce qui est point� par" ton pointeur (*ptr).truc, alors qu'avec les r�f�rences, tu utilise exactement la m�me syntaxe que celle que tu utiliserais si tu avais affaire � un objet et non � une r�f�rence ( ref.truc)

    Tu comprendra donc assez facilement que
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  4. #4
    screetch
    Invit�(e)
    Par d�faut
    Et, surtout, d'�viter le recours � l'op�rateur "address of" afin de permettre le passage d'un pointeur � une fonction.
    ca se discute, l'opinion oppos�e etant que les r�f�rences sont moins lisibles lors de l'appel de fonction.
    Lorsque je tape "&variable" je vois bien que ma variable risque d'�tre modifi�e. Lorsque je passe "variable" seulement, il faut aller voir la fonction.

  5. #5
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Citation Envoy� par screetch Voir le message
    ca se discute, l'opinion oppos�e etant que les r�f�rences sont moins lisibles lors de l'appel de fonction.
    Lorsque je tape "&variable" je vois bien que ma variable risque d'�tre modifi�e. Lorsque je passe "variable" seulement, il faut aller voir la fonction.
    Lorsque tu tape "&variable", tu sais qu'il est possible qu'elle soit modifi�e, mais, si tu n'a pas acc�s au code de la fonction, tu n'a aucun moyen de t'en assurer...

    Lorsque tu tape "variable", tu dois, effectivement, v�rifier le prototype de la fonction, mais tu n'a pas besoin d'avoir acc�s � son code, parce que tu as trois solutions:
    1. l'argument est pass� par valeur, et les modifications ne sont pas r�percut�es
    2. l'argument est pass� par r�f�rence, et les modifications seront r�percut�es
    3. l'arguemnt est pass� par r�f�rence constante et les modifications sont impossibles
    Evidemment, cela n�cessite de respecter la "const correctness" tout au long de ton projet
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  6. #6
    Membre chevronn� Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par d�faut
    Hum, il y a aussi le mot const pour les pointeurs . L'avantage du passage par adresse c'est que tu es sur que ce n'est pas passer par valeur, m�me sans voir le prototype... Remarque, comment savoir qui faut le passer par adresse si on a pas vu le prototype oO !

Discussions similaires

  1. R�ponses: 1
    Dernier message: 24/03/2012, 20h26
  2. Probl�me de compr�hension d'un exercice sur les pointeurs
    Par neufrdb dans le forum Algorithmes et structures de donn�es
    R�ponses: 7
    Dernier message: 28/05/2011, 23h58
  3. Exercices pour d�butants : pointeurs
    Par neo214 dans le forum D�buter
    R�ponses: 10
    Dernier message: 10/11/2007, 10h28
  4. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    R�ponses: 3
    Dernier message: 28/12/2006, 01h16

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