IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Passage de parametresa une fonction


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut Passage de parametresa une fonction
    Bonjour, j'ai un petit probleme pour passer quelques parametres a une fonction.

    Je vous montre la déclaration de mes variables dans mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int marioPrecedent = 0, droite = 0, gauche = 0;
    SDL_Surface *mario[16] = {NULL};
    SDL_Surface *marioActuel = NULL;
    long totalPied;

    Mon probleme es le suivant, si je met ce code dans mon main, ca fonctionne tres bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(totalPied != 0 && droite == 0 && gauche ==0)
                     {  
                         marioActuel=mario[NORMAL];
                         marioPrecedent=NORMAL;
                     }

    Seulement, je ne veux pas surcharger mon main, et donc pour plus de lisibilité, j'aimerai passer ceci dans une fonction.

    Voila donc le prototype de ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void marioNormal(long totalPied, int droite, int gauche, SDL_Surface *marioActuel, SDL_Surface **mario, int *marioPrecedent)

    Et enfin le code de ma fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void marioNormal(long totalPied, int droite, int gauche, SDL_Surface *marioActuel, SDL_Surface **mario, int *marioPrecedent)
    {
                 if(totalPied != 0 && droite == 0 && gauche ==0)
                     {  
                         *marioActuel=*mario[NORMAL];
                         *marioPrecedent=NORMAL;
                     }    
     
     
     
    }

    Si j'envoie mes variables à la fonction, ca me fait du grand n'importe quoi.

    Avez vous une idée ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void marioNormal(long totalPied, int droite, int gauche, SDL_Surface **marioActuel, SDL_Surface **mario, int *marioPrecedent)
    {
       if (totalPied != 0 && droite == 0 && gauche ==0)
       {  
          *marioActuel = mario[NORMAL];
          *marioPrecedent = NORMAL;
       }    
    }
    Ce que tu as essayé de faire dans la première ligne de ta condition, c'est passer la valeur d'un indice de ton tableau à une zone non allouée alors qu'il faut simplement passer l'adresse du pointeur de ton indice du tableau mario vers le pointeur marioActuel

    Il te suffit de faire ces quelques modifications puis de passer l'adresse de ton pointeur marioActuel dans l'appel de la fonction. Ca devrais passer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    Merci pour ta réponse mais quand je fais ca, le programme se coupe des que mario touche le sol (cette fonction doit gerer l'apparence de mario au touché du sol)

    Je te montre l'appel de la fonction dans le main, ca viendrait peut etre de la ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    marioNormal(totalPied, droite, gauche, marioActuel, mario, &marioPrecedent);
    Merci d'avance


    edit, j'ai trouvé mon probleme a l'nstant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    marioNormal(totalPied, droite, gauche, &marioActuel, mario, &marioPrecedent);

    Je te remercie beaucoup pour ta réponse, et surtout pour ton explication, c'est vrai que les pointeurs, le concept est simple, mais a manier...

    Merci beaucoup

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par candreolli
    edit, j'ai trouvé mon probleme a l'nstant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    marioNormal(totalPied, droite, gauche, &marioActuel, mario, &marioPrecedent);
    C'est ce que je t'avais proposé dans ma première réponse en parlant de passer l'adresse de ton pointeur au lieu du pointeur lui même
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Par défaut
    ^^

    J'étais en train d'éditer mon message quand tu m'as répondu


    Je vennais de m'en rendre compte en fait.

    Merci beaucoup

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par candreolli
    Je vennais de m'en rendre compte en fait.
    C'est l'essentiel
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] : Passage de paramètres à une fonction
    Par dcollart dans le forum Oracle
    Réponses: 5
    Dernier message: 13/07/2006, 10h17
  2. Réponses: 8
    Dernier message: 10/03/2006, 17h28
  3. [VBA-E]passage de parametre à une fonction
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/02/2006, 17h51
  4. Passage de 'pipe' à une fonction ?
    Par laurent_ifips dans le forum POSIX
    Réponses: 2
    Dernier message: 25/11/2005, 07h06
  5. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo