Partage
  • Partager sur Facebook
  • Partager sur Twitter

Transformer une position en pointeur

es ce possible?

    10 janvier 2007 à 17:55:53

    C'est pour l'envoyer a une fonction en fait, j'essaye et tout a l'air de bien se passer mais dès que je sort un position.x ou .y et bien sa marche plus...

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2007 à 18:44:43

      Avec la SDL ?

      Alors :


      #include <stdlib.h>
      #include <stdio.h>
      #include <SDL/SDL.h>

      void deplacement(SDL_Rect *position);

      int main(int argc, char *argv[])
      {
         SDL_Rect position;
       
         /* Code */

         deplacement(&position);

         /* Code
         * SDL_Quit, SDL_FreeSurface, return... */

      }

      void deplacement(SDL_Rect *position)
      {
         position->x += 30;
         position->y += 30;   
      }
      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2007 à 18:58:49

        Citation : ze_Niko0

        C'est pour l'envoyer a une fonction en fait, j'essaye et tout a l'air de bien se passer mais dès que je sort un position.x ou .y et bien sa marche plus...



        int a[5];
        int *pa = a + 2; /* pointe sur a[2] */


        Sinon, poste un code réduit au minimum mais compilable qui montre le problème.
        • Partager sur Facebook
        • Partager sur Twitter
        Music only !
          12 janvier 2007 à 21:58:23

          J'ai remplacer le position.x par un position->x et, sans que je sache pourquoi, ben sa marche... Enfin merci quand même (même si j'aimerais bien une explication sur le dernier point ^^)
          • Partager sur Facebook
          • Partager sur Twitter
            12 janvier 2007 à 22:06:25

            Citation : ze_Niko0

            J'ai remplacer le position.x par un position->x et, sans que je sache pourquoi, ben sa marche... Enfin merci quand même (même si j'aimerais bien une explication sur le dernier point ^^)


            En C, les passages de paramètres se font exclusivement par recopie de la valeur.

            Pour 'passer' une structure à une fonction, la stratégie est la même que pour les tableaux : on passe l'adresse de la structure :

               T s;
               f (&s);

            le paramètre est donc un pointeur du même type :
            void f(T *p)

            Pour atteindre un élément, on doit donc
            déréférencer le pointeur :
               *p

            et utliser le '.' pour atteindre un élément. Afin de respécter la préséance des opérateurs, il faut entourer le déréférencement de parenthèses :
               (*p).element

            ce qui fait une syntaxe assez lourde. C'est pourquoi le langage C définit une syntaxe alternative bien plus légère avec '->' :
               p->element

            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              13 janvier 2007 à 11:13:50

              Exact, et tout ça est expliqué dans le cours :p
              • Partager sur Facebook
              • Partager sur Twitter

              Transformer une position en 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