Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoi de structure a une fonction

Mauvais pointeur ?!

Sujet résolu
    8 juillet 2006 à 18:37:22

    Salut, je suis actuellement en train de recréer un Space Invader ( le petit shoot em up où on doit tirer sur des martiens qui descendent vers vous progressivement :p ) et dans le cadre du devellopement de ce mini-jeu, je suis amené a créer une fonction a laquelle je dois envoyer une structure créé par mes soins. Seulement, je n'arrive pas à envoyer cette structure a ma fonction, il y'a une erreur de type : "WARNING: passsing arg mauvis pointeur type o_O " ( ou un truc similaire )

    voici le code qui plante:


    //...
    typedef struct missiles missiles;
    typedef struct personnage personnage;

    struct missiles {
        int x;
        int y;
        int opperationel;
        int hauteur;
        int largeur;
        int munitions;
    };
       
    struct personnage {
        missiles missiles[TIR_MAX];
        int x;
        int y;
        int vif;
        int largeur;
        int hauteur;
        int vie;
        int bonus;
        int niveau;
    };

    int chargerNiveau(personnage* martien[][10], int niveaux)
    {
        // fonction
    }
    //programme
    void jouer(SDL_Surface *ecran)
    {
        // fonction
        personnage martien[10][10];
        personnage joueur;
        chargerNiveau( &martien, 1 );
        //suite
    }
    //...


    Si quelqu'un a repéré l'erreur, ce serait sympas de me la communiquer :-°

    P.S: toute aide sera la bienvenue
    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2006 à 9:25:50

      Bonjour,

      si ce que tu veux passer à ta fonction chargerNiveau est un tableau de la structure personnage (exemple de la déclaration : personnage martien[10];)

      Ta fonction doit être comme ceci :


      int chargerNiveau(personnage* martien, int niveaux)
      {
      }


      Mais dans ce cas je te conseillerais aussi de passer la taille de ton tableau en paramètre :


      int chargerNiveau(personnage* martien, int taille, int niveaux)
      {
         /* exemple d'accès à ta structure */
         martien[0].vie = 100;
      }


      • Partager sur Facebook
      • Partager sur Twitter
        9 juillet 2006 à 10:13:28

        Le problème vient évidement de là :
            chargerNiveau( &martien, 1 );

        Si la fonction attend un tableau en paramètre, pourquoi lui passer un pointeur sur un tableau ?
            chargerNiveau( martien, 1 );
        • Partager sur Facebook
        • Partager sur Twitter
          9 juillet 2006 à 10:18:04

          j'ai regardé ton code vite fait et je te l'ai modifié legerement:

          int chargerNiveau(personnage*** martien, int niveaux)
          {
              // fonction
          }

          int main(int argc, char *argv[])
          {
              int i;
              personnage joueur;
              personnage** martien;

              martien = malloc(10 * sizeof(personnage*));
              if(!martien)return 1;
              for(i = 0; i < 10; i++)
              {
                  martien[i] = malloc(10 * sizeof(personnage));
                  if(!martien[i])
                  {
                      free(martien);
                      return 1;
                  }
              }


              chargerNiveau( &martien, 1 );

              for(i = 0; i < 10; i++)
              {
                  free(martien[i]);
              }
              free(martien);

              return 0;
          }


          Plus aucun warning (éxépté pour les variable inutilisé mais ca je penses que tu compte bien t'en servir :D ).
          • Partager sur Facebook
          • Partager sur Twitter
            9 juillet 2006 à 10:19:11

            Merci pour ta reponse, mais comme ca ne marchait toujours pas ( je sais pas pour quoi) j'ai décidé d'envoyer un tableua a la fonction et puis dans la boucle principale, transferer les données du tableau dans ma structure.

            PS: Remram, la fonction attend un tableau de structure, je sais pas si c'est la meme chose ou pas, mais de toute facon c'est resolus maintenant.
            merci quand meme
            • Partager sur Facebook
            • Partager sur Twitter

            Envoi de structure a une fonction

            × 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