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 :

problème avec une variable globale(SDL)


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut problème avec une variable globale(SDL)
    bonjour à tous

    je vous explique d'abord le contexte
    Dans main() :
    je déclare la variable

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Surface *cibleActuelle=NULL;



    ensuite je lui affecte une valeur par defaut

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(cibleActuelle==NULL)//lors du démarrage du jeu zozor sera la cible par defaut
        {
                cibleActuelle=zozor;
        }


    lorsque j'appuie sur la touche o je lance la fonction option()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    option(ecran, cibleActuelle);
    dans option():
    j'appelle la fonction changerPerso()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    changerPerso(ecran, cibleActuelle);
    dans ChangerPerso():
    j'affiche d'abord cibleActuelle
    puis en dessous j'affiche toutes les cibles disponibles. lorsque je clic sur l'une d'elle cibleActuelle change et se réaffiche correctement dans changerPerso().

    et mon problème est le suivant

    lorsque je retourne dans mon main(), cibleActuelle est toujours égal à zozor

    merci

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Dans le code que tu montre, cibleActuelle n'est pas une variable globale puisqu'elle est déclarée dans main(). C'est une variable locale de main(). Il est donc normal que tu ne puisse pas la modifier dans changerPerso().

    Si tu veux une variable globale, il faut la déclarer en dehors de toute fonction. Et dans ce cas, pas besoin de la passer à changerPerso().

    Si tu veux une variable locale, il faut passer son adresse à changerPerso(). Donc le prototype de changerPerso() doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    changerPerso(..., SDL_Surface **);
    Et tu dois l'appeler ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    changerPerso(ecran, &cibleActuelle)

Discussions similaires

  1. Problème avec une variable.
    Par ceroxono dans le forum Débuter
    Réponses: 3
    Dernier message: 06/06/2008, 14h19
  2. Problème avec une variable static
    Par Kevin12 dans le forum Général Java
    Réponses: 2
    Dernier message: 05/05/2008, 17h20
  3. problème avec une variable de type string
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 14h53
  4. [PHP-JS] problème avec une variable
    Par schats dans le forum Langage
    Réponses: 14
    Dernier message: 15/04/2007, 13h54
  5. [Javascript] problème avec une variable
    Par creatik dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/09/2006, 18h38

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