Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passage d'une structure en argument de fonction

Sujet résolu
    18 mai 2014 à 10:24:30

    Bonjour. J'ai créer  une structure dans mon .h:

    struct chose {
    	int x; // pour l'exemple
    	int y;
    };
    typedef struct chose chose;

    Dans mon main, j'ai initialisé une variable de type chose, que j'ai passé a une fonction void de maniére a pouvoir modifier cette structure dans la fonction (je croit qu'on dit en "paramétre d'entrée/sortie"):

    MAIN:

    chose machose;
    int valeur;
    
    fonction1(&machose);
    
    valeur = machose.x;
    printf("%d", valeur);

    Et voici le code de "fonction1" et de "fonction2":

    void fonction1(chose *p_machose) {
    (p_machose->x) = 5;
     fonction2(p_machose); // c'est déjà une adresse, je ne met pas de &, erreur?
    }
     
    void fonction2(chose p_machose) { // erreur?
     (p_machose->x)++;
    }




    C'est a ce moment que j'ai un problème, même si sur cet exemple c'est inutile, je veut passer ma structure a une autre fonction que j'appelle dans fonction 1, mais de façon a pouvoir toujours modifier ses valeurs a l'intérieur de fonction2. Or, je n'y parvient pas, j'ai donc du faire une erreur dans les paramètres de la 2éme fonction ? Ou alors, il s'agit d'une erreur dans la notation de l’accès au champ.

    Ça ne doit pas être très compliqué mais je n'y arrive pas... Sauriez vous résoudre mon problème ?

    Merci d'avance et bon dimanche !



    -
    Edité par DdavidD 18 mai 2014 à 10:25:46

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2014 à 10:30:11

      void fonction2(chose p_machose) { // Il manque une *
       (p_machose->x)++;
      }

      Tu as oublié de mettre une * après chose.


      void fonction2(chose *p_machose) { // erreur?
       (p_machose->x)++;
      }



      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2014 à 11:18:13

        En effet, cela fonctionne parfaitement maintenant. Merci pour ton aide !

        • Partager sur Facebook
        • Partager sur Twitter

        Passage d'une structure en argument de fonction

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown