Partage
  • Partager sur Facebook
  • Partager sur Twitter

struct et pointeurs

Sujet résolu
    24 mai 2006 à 12:50:34

    Bijour a tous !!
    voila, j'ai un ptit problème avec la manipulation de structure à l'interieur de fonctions via un pointeur (avec utilisation de SDL) ...
    Voila le code :


    typedef struct TypeItems TypeItems;
        struct TypeItems
        {
            SDL_Surface* souris;
            SDL_Surface* ram;
            SDL_Surface* clavier;
            SDL_Surface* ecran;
            SDL_Surface* carteMere;
            SDL_Surface* disqueDur;
            SDL_Surface* carteGraphique;
        };


    Dans main.c :

    TypeItems listeItems;

        listeItems.souris = IMG_Load("souris.gif");
        listeItems.ram = IMG_Load("ram.gif");
        listeItems.clavier = IMG_Load("keyboard.gif");
        listeItems.ecran = IMG_Load("ecran.gif");
        listeItems.disqueDur = IMG_Load("hardisk.gif");
        listeItems.carteMere = IMG_Load("motherboard.gif");
        listeItems.carteGraphique = IMG_Load("carteG.gif");

    newItem(item, &positionItem, &listeItems, &compteur);


    avec :

    void newItem(SDL_Surface *item, SDL_Rect *positionItem, TypeItems *listeItems, int *compteur){
        item = listeItems->disqueDur;
    }


    Bon, j'ai réduis le vrai code, le reste étant commenté pour situer d'où venait le problème ... Apparament, c'est le item = listeItems->disqueDur; dans la fonction qui ne se fait pas bien .. Cela vien peut etre du fait que c'est un pointeur sur stucture, plus présisément un pointeur sur pointeur (disqueDur est un pointeur sur SDL_Surface).

    Voilà, le problème étant, je le rapelle, que la valeur de item (qui est donc supposé recevoir un pointeur sur SDL_Surface) n'est aps mis a jour ...

    Quelqu'un aurait-il une idée ??


    Merci d'avance !!
    Swop
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2006 à 14:51:07

      Bonjour,

      void newItem(SDL_Surface** item, SDL_Rect *positionItem, TypeItems *listeItems, int *compteur){
          *item = listeItems->disqueDur;
      }


      ça devrais marcher!
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2006 à 17:56:48

        oui mais l'"item" envoyé a la fonction est un simple pointeur vers une surface, pas un double pointeur .. ca risque pas de merder si je fais ca ?
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2006 à 18:06:36

          non, parceque :
          * variable[]
          est égal à :
          ** variable
          ;)
          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2006 à 19:47:42

            ok, c bon, ca marche !!! merci bcp !!
            • Partager sur Facebook
            • Partager sur Twitter

            struct et 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