Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les pointeurs : aie aie

Confusion totale !

    17 janvier 2006 à 18:05:51

    Salut !
    Comme promis, je refais un p'tit topic sur les pointeurs, parce que la confusion règne ! J'ai compris la base de chez base pour les pointeurs, mais dans certains cas, je pige plus rien... Bon, par exemple, ca :


    int *p = a;



    Ca va faire quoi ? Erreur ? Contenir adresse de a ? Contenir valeur de a ?
    et ça :
    Code:

    int *p =&a;
    p++
    cout <<*p <<endl;  // ???? Affiche 2293680
    cout << p <<endl ;



    Quand j'incrémente un pointeur, qu'est-ce-qui s'incrément ? La valeur sur le quoi il pointe, ou l'adresse ? Est-ce-que le fragment de code que j'ai mis plus haut est egale à ca :



    int *p =&a;
    *p++ // ici le changement, j'ai rajouté l'étoile
    cout <<*p <<endl;  // ???? Affiche 2293680
    cout << p <<endl ;



    (J'ai rajouté l'étoile). Alors, ca va changé qq chose ?

    Si tu pouvais répondre correctement à toutes mes questions, ca m'éclerait. Parce que j'ai une "étude" des fragmentés sur les pointeurs, je sais plus quoi pensé ! Je reviendrai surement apporter de nouvelles questions et fragments de codes... J'espère que tu apporteras tes réponses !

    PS : En faite, c'est utile que j'apprenne les pointeurs au moins (en c++). Parce que, j'ai pas trop l'impresion que ca me sert pour le moment !

    Merci d'avance ! (Et si vous conaissez une bon p'tit lien pour me remettre les idées en place, pas de refus non plus)
    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2006 à 18:09:41

      franchement desolé de ma reponse mais tu peux pas faire comme tout le monde et suivre les cours de mateo dans l'ordre ? ca t'eviterai surement toute ces confusions
      perso j'y connais rien au pointeur mais peut etre qui en a qui pourront t'aider :D
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2006 à 18:11:40

        Mateo n'a pas encore parlé des pointeurs...
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2006 à 18:55:32

          Ben il faut encore attendre un peu !!!! Mais pas tro j'espère
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            17 janvier 2006 à 19:12:27

            Le premier code initialise un pointeur p et stockes dedans, en tant qu'adresse, la valeur de la variable a, mais erreur : il faudrait mettre un &a pour avoir l'adresse de a, sinon tu initialises un pointeur avec un int ou autre.

            Quand tu incrémentes un pointeur, c'est l'adresse qu'il contient qui est incrémentée. Selon la norme le ocmportement du programme sera indéfini car ton pointeur pointera une adresse qui n'appartient pas au même tableau que a (en fait ça ne marche bien que quand tu incrémentes un pointeur et qu'il pointe toujours sur des cases d'un même tableau).

            Quant au 3ème code, attention au priorité : *p++ est interprêté comme (*p)++ donc augmente la valeur située à l'adresse contenue dans p, sinon *(p++) augmente p (décale le pointeur) puis retourne la valeur ainsi pointée.

            J'espère que je dis pas de bêtises....
            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2006 à 19:42:33

              Citation : louisclem

              Le premier code initialise un pointeur p et stockes dedans, en tant qu'adresse, la valeur de la variable a, mais erreur : il faudrait mettre un &a pour avoir l'adresse de a, sinon tu initialises un pointeur avec un int ou autre.


              Vi il y a conversion de l'(int) à (int *), ce qui n'est pas une bonne idée ici.

              Citation

              Quant au 3ème code, attention au priorité : *p++ est interprêté comme (*p)++ donc augmente la valeur située à l'adresse contenue dans p, sinon *(p++) augmente p (décale le pointeur) puis retourne la valeur ainsi pointée.


              A ce que je sache ++ en postfix a priorité sur *. Aussi *(p++) te donne la valeur à la position courante de p et incrémente après.
              • Partager sur Facebook
              • Partager sur Twitter
                17 janvier 2006 à 20:16:51

                Ho My God...
                Merci, je ne comprends toujours rien, mais plus, je me rends compte que je comprends encore moins de se que je croyais comprendre :-°

                Enfin, pas pour moi les pointeurs,...
                • Partager sur Facebook
                • Partager sur Twitter
                  17 janvier 2006 à 20:35:35

                  Attend les cours de Matéo ou va voir le cours que thomasc a fait sur le site et qui est très bien : http://www.siteduzero.com/tuto-3-434-0-les-pointeurs-en-c-c.html

                  Sache que même si les pointeurs c'est chiant tu devras forcément y passer pour continuer à programmer.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Les pointeurs : aie aie

                  × 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