Partage
  • Partager sur Facebook
  • Partager sur Twitter

passage par adresse et les pointeurs

question me derange

Sujet résolu
Anonyme
    22 juillet 2016 à 21:18:15

    salut,

    je trouve pas la differance entre ces trois declarations

    expliquer quelle esst la differance entre elles svp

    void main()
    {
    
    char* p;
    
    char * p;
    
    char *p;
    
    }

    jai essayer de comprendre la deuxieme mais jai rien compris

    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2016 à 22:21:33

      Hello,

      Tu pourrais même écrire

                       char          *                      p
               ;

      ton compilateur le comprendrait parfaitement.

      • 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

        23 juillet 2016 à 16:35:35

        C'est la 3ème notation qu'il faut retenir ...

        char *p1, *p2;

        est différent de

        char* p1, p2;




        • Partager sur Facebook
        • Partager sur Twitter
          23 juillet 2016 à 17:21:16

          Salut !

          Il me semble que la seule différence notable est celle-ci : 

          char* p1, p1, p3; // ==> Déclare trois pointeur sur char
          
          char *p1, p2, p3; // ==> Déclare un pointeur sur char et 2 chars
          • Partager sur Facebook
          • Partager sur Twitter
            23 juillet 2016 à 17:23:01

            _Bats_ a écrit:

            Salut !

            Il me semble que la seule différence notable est celle-ci : 

            char* p1, p2, p3; // ==> Déclare trois pointeur sur char
            
            char *p1, p2, p3; // ==> Déclare un pointeur sur char et 2 chars

            Non, ces deux lignes sont équivalentes → p1 est de type pointeur sur char, p2 et p3 sont de type char. Les espaces ne sont pas importantes mais l'étoile ne qualifie que la variable à sa droite.
            • Partager sur Facebook
            • Partager sur Twitter
            First solve the problem. Then, write the code. ~ John Johnson
              23 juillet 2016 à 17:23:48

              Hello,

              _Bats_ a écrit:

              Salut !

              Il me semble que la seule différence notable est celle-ci : 

              char* p1, p1, p3; // ==> Déclare trois pointeur sur char
              
              char *p1, p2, p3; // ==> Déclare un pointeur sur char et 2 chars


              Hé non. La seconde interprétation est également valable pour la première ligne....

              Ce que le compilateur va "voir", c'est

              char *p1;
              char p2;
              char p3;

              Edgar;

              -
              Edité par edgarjacobs 23 juillet 2016 à 17:24:46

              • 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

                23 juillet 2016 à 17:29:38

                magma a écrit:

                C'est la 3ème notation qu'il faut retenir ...

                char *p1, *p2;

                est différent de

                char* p1, p2;

                edgarjacobs a écrit:

                Hello,

                _Bats_ a écrit:

                Salut !

                Il me semble que la seule différence notable est celle-ci : 

                char* p1, p1, p3; // ==> Déclare trois pointeur sur char
                
                char *p1, p2, p3; // ==> Déclare un pointeur sur char et 2 chars


                Hé non. La seconde interprétation est également valable pour la première ligne....

                Ce que le compilateur va "voir", c'est

                char *p1;
                char p2;
                char p3;

                Edgar;

                -
                Edité par edgarjacobs il y a 3 minutes

                Pour rebondir … Il est tellement plus simple d'utiliser la version «une ligne par déclaration», certainement celle qui sera la moins source d'erreurs.
                • Partager sur Facebook
                • Partager sur Twitter
                First solve the problem. Then, write the code. ~ John Johnson
                  23 juillet 2016 à 17:54:17

                  Oh la autant pour moi ! :euh: Je sais plus où j'ai vu ça ... En Java peut-être.
                  Enfin bref merci de me corriger :D

                  -
                  Edité par Xenoliss 23 juillet 2016 à 17:54:26

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juillet 2016 à 18:02:16

                    PicoDev a écrit:

                    Pour rebondir … Il est tellement plus simple d'utiliser la version «une ligne par déclaration», certainement celle qui sera la moins source d'erreurs.

                    Je suis d'accord, juste un "petit bémol": à partir du moment où toutesles variables d'une ligne ont le même type, je fais facilement
                    int i,j,k;
                    char *dest,*src;
                    struct thingy thisStruct;
                    struct thingy *ptr1,*ptr2;

                    Question d'habitude et de rigueur.

                    Edgar;


                    -
                    Edité par edgarjacobs 23 juillet 2016 à 18:03:47

                    • 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

                    passage par adresse et les pointeurs

                    × 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