Partage
  • Partager sur Facebook
  • Partager sur Twitter

caractérisation d'un double pointeur

C++

    6 novembre 2018 à 13:19:55

    Bonjour OC,

    j'étais en train de m'exercer sur les doubles pointeurs.

    Et pour vérifier que j'ai compris la notion, j'en suis arrivé au fait que l'on peut caractériser un double pointeur p par :

    p=&(*p)

    Cette assertion que je n'ai pas tirée d'une ressource à priori , est-elle juste ?

    Si oui, elle doit sûrement exister quelque part dans un livre
    merci

    -
    Edité par pseudo-simple 6 novembre 2018 à 13:20:32

    • Partager sur Facebook
    • Partager sur Twitter
      6 novembre 2018 à 13:27:56

      Lu'!

      C'est une conséquence de la sémantique des opérateurs & et * . Elle ne s'applique pas qu'aux double pointeurs.

      Mais je vois mal où tu veux aller avec ça.

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        6 novembre 2018 à 13:30:41

        à quoi d'autre s'applique t-elle ?

        -
        Edité par pseudo-simple 6 novembre 2018 à 13:38:12

        • Partager sur Facebook
        • Partager sur Twitter
          6 novembre 2018 à 13:32:48

          A tout pointeur (sauf peut être void*).

          -
          Edité par Ksass`Peuk 6 novembre 2018 à 13:33:25

          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            6 novembre 2018 à 13:37:58

            Je viens de faire un test avec un pointeur tout simple et ça s'applique aussi.

            ce qui me paraît bizarre dans ce cas, c'est que pour un pointeur simple ,

            *p peut par exemple valoir la valeur 2

            et prendre l'adresse de 2 n'a pas forcément de sens pour le compilateur

            -
            Edité par pseudo-simple 6 novembre 2018 à 13:38:25

            • Partager sur Facebook
            • Partager sur Twitter
              6 novembre 2018 à 13:38:44

              Un double pointeur, c'est un pointeur de pointeur:

              int a;
              int *p = &a;
              int **pp = &p;

              YES, man a écrit:

              p=&(*p)

              On va partir du principe que les 2 p representent chacun une variable differente. 

              Avec ce code, tu tournes en rond. 

              Sinon, d'un point e vue C++, ça ne t'apportera rien de te focaliser là dessus. Deja que les pointeurs simples sont rares, je te laisse imaginer poUr les doubles pointeurs. Perso, les seuls fois où j'ai vu des pointeurs doubles, étaient lorsque des gens (qui pensaient coder en C++) éssaient de faire un tableau à 2 dimension.



              -
              Edité par eugchriss 6 novembre 2018 à 13:39:18

              • Partager sur Facebook
              • Partager sur Twitter

              Eug

                6 novembre 2018 à 13:46:05

                L'argument que tu utilises aussi serait tout à fait applicable au cas du double pointeur. *p n'est qu'une valeur aussi, et en prendre l'adresse ne ferait pas plus de sens selon le même argument.

                Pour le pourquoi du comment exact, il faudrait regarder de plus près les questions de pr-value et compagnie. Mais ça ne fait pas grand sens de toute façon. A mon avis, ton expression est simplement unfoldée par défaut sur tous les compilateurs (dans les analyseurs C, c'est le cas).

                • Partager sur Facebook
                • Partager sur Twitter

                Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                  6 novembre 2018 à 13:54:05

                  Y a pas à se faire tout un sketch en se gargarisant avec des "double pointeurs"

                  int **p;    c'est jamais que la déclaration d'une variable p qui contient une adresse.     Et cette adresse est celle d'une donnée qui est l'adresse d'un entier.

                  typedef int *AdresseEntier;
                  AdresseEntier *p;
                  

                  Y a quelque chose à voir ? Non, alors circulez !



                  -
                  Edité par michelbillaud 6 novembre 2018 à 13:54:14

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 novembre 2018 à 13:54:31

                    YES, man a écrit:

                    *p peut par exemple valoir la valeur 2

                    et prendre l'adresse de 2 n'a pas forcément de sens pour le compilateur

                    Pour être précis, c'est l'adresse pointée par p qui contient la valeur 2. Et ça a du sens.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    caractérisation d'un double pointeur

                    × 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