Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pointeurs de structure

Sujet résolu
    26 mars 2015 à 19:27:55

    Bonjour à tous,

    je voulais savoir pourquoi on utilise préférentiellement des fonctions qui retournent et utilisent des pointeurs sur structure plutôt que des structures elles-mêmes.

    Merci d'avance pour vos réponses.

    -
    Edité par pegase1618 27 mars 2015 à 18:53:02

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2015 à 22:27:08

      Bonjour à toi,

      Si je ne dis pas de bêtise c'est dû aux typedef que tu as mis dans ton .h.  Quand tu fais "pTREENODE" dans ton .c ca signifie que "ptn" est de type "struct treenode*". Si tu ne veux pas renvoyer de structure il faut faire : "struct treenode ptn" par exemple.

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2015 à 1:00:44

        Hello,

        Comme toujours, je m'insurge contre le fait de masquer un pointeur derrière un typedef. Je trouve que pour la (re)lecture / correction d'un programme (par le programmeur ou un collègue plus tard, ou ici sur le site par exemple), c'est fatiguant. Mais bon....

        Mais ton incompréhension vient bien, comme le dit Shirô, de la mauvaise utilisation de tes typedef.... comme quoi....

        Ou alors, de ta mauvaise compréhension de ce qu'est un pointeur. Et je parie que tu n'as pas de warning lors de la compilation de ces deux fonctions....

        A+

        Edgar;

        -
        Edité par edgarjacobs 27 mars 2015 à 1:01:37

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          27 mars 2015 à 1:54:59

          edgarjacobs a écrit:

          Mais ton incompréhension vient bien, comme le dit Shirô, de la mauvaise utilisation de tes typedef.... comme quoi....


          Non, il  a très bien compris qu'il renvoie des pointeurs puisque:

          pegase1618 a écrit:


          pourquoi les fonctions createTreeNode et createCharacter renvoient des pointeurs de structure pTREENODE et pCHARACTER et pas simplement des structures TREENODE et CHARACTER.

          Ce qu'il veut savoir c'est pourquoi on renvoi des pointeurs sur structure, et pas juste la structure!
          Je pense d'une part que c'est pour minimiser les copies de structure (tout se passe par copie) et cela coûte moins cher de faire une copie d'un pointeur que une copie d'une structure.

          Également, dans le cadre de liste (ou arbre) le compilateur ne pourrait pas créer une structure de type:

          struct treeNode{
              struct treeNode father;
              struct treeNode left;
              struct treeNode right;
          };

          (imbrication infinie ce qui fait que la taille de la structure serait infinie )

          Donc comme on a besoin de pointeur, on alloue la variable sur le tas et l'on renvoie son adresse.

          -
          Edité par breizhbugs 27 mars 2015 à 1:55:38

          • Partager sur Facebook
          • Partager sur Twitter
          ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
            27 mars 2015 à 18:48:19

            Merci à tous pour vos réponses. J'ai longuement chercher une explication hier et après quelques heures de recherche (quand même ^^) j'en suis arrivé aux mêmes conclusions que la réponse de Breizhbugs: en fait, si on nous propose de faire cela, c'est simplement que ça permet d'éviter de faire des copies de structures dans les fonctions qui sont beaucoup plus gourmandes en stockage que des pointeurs sur structure. Merci encore d'avoir pris la peine de me répondre.

            -
            Edité par pegase1618 27 mars 2015 à 19:02:25

            • Partager sur Facebook
            • Partager sur Twitter
              27 mars 2015 à 23:30:55

              @breizhbugs @pegase1618: au temps pout moi: je n'ai pas compris la demande. Sorry.

              Edgar;

              • Partager sur Facebook
              • Partager sur Twitter

              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              Pointeurs de structure

              × 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