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 :

passage par valeur et passage par adresse 'les pointeurs'


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut passage par valeur et passage par adresse 'les pointeurs'
    Salut à tous.
    J'ai un programme pour l'échange entre les variables.
    Le problème est qu'il éxécute pas l'échange.
    Ou est la faute ?
    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
    #include <stdio.h>
    #include <stdlib.h>
    /***********************/
    /**fonction échange**/
    void echange (int *pa,int *pb)
    {
         int *pc;    /* var locale*/
         printf("la valeur de a=%d et b=%d debut fonction echange\n",pa,pb);
         pc=pa;   /*c<--a**/
         pa=pb;  /** a<--b**/
         pb=pc;   /**b<--c**/
         }
         /*****************/
    int main(int argc, char *argv[])
    {
      /**VAR LOCALE**/
      int n=10,p=20;
      printf ("valeur de n=%d et p=%d avant appel de fonction echange\n",n,p);
      /*******************/
      /*** APPEL FONCTION ***/
      echange(n,p);
      printf(" valeur de n=%d etp= %d apres appel de fonction echange\n",n,p);
      system("PAUSE");	
      return 0;
    }
    Merci pour vos aides

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    C'est parce que tu échanges les pointeurs et non les entiers eux-mêmes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    Correction:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void echange (int *pa, int *pb)
    {
    	int c;    /* var locale*/
    	printf("la valeur de a=%d et b=%d debut fonction echange\n",pa,pb);
    	c   = *pa; /* c<--a */
    	*pa = *pb; /* a<--b */
    	*pb = c;   /* b<--c */
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut
    Salut à tous.

    Merci Médinoc pour la réponse.

    Cordialement.

  5. #5
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut
    Salut à tous.

    Mon programme détecte des fautes quand je veux faire la compilation, aprés la modification que M Médinoc m'as proposer.

    la faute est dans ,et le compilateur indique
    22 C:\Documents and Settings\Administrateur\Bureau\tp\tp3\1\main.c [Warning] passing arg 1 of `echange' makes pointer from integer without a cast .

    Et je n'arrive pas à trouvée la solution.
    pouvez vous m'aider enncore encore une fois

    Cordialmement.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 401
    Par défaut
    Si n et p sont des entiers, la fonction doit être appelée ainsi:
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/01/2013, 15h08
  2. Réponses: 6
    Dernier message: 18/05/2012, 13h07
  3. Réponses: 2
    Dernier message: 15/06/2011, 12h13
  4. Passage d'arguments par valeur et adresse
    Par ToutEnMasm dans le forum C++
    Réponses: 12
    Dernier message: 04/10/2007, 10h32
  5. Passage par valeur / passage par adresse
    Par jeje99 dans le forum C++
    Réponses: 13
    Dernier message: 16/02/2006, 11h29

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