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 Variables globales


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut Problème Variables globales
    Bonjour à tous,

    J'ai un petit soucis au niveau de ma gestion de variables j'ai deux variable que j'aimerais avoir comme variable globale c'est à dire que si leur valeurs est modifiée dans une fonction elle est modifiée dans le reste du programme, mais je n'y arrive pas...

    voilà une version simplifiée de mon code (sans les allocations mémoires et autre partie du prog qui ne concerne pas ma question) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    unsigned char ** Calcul_ASHINDEX(float min, float max, double **data, int nblig, int nbcol);
     
    void main()
    {
    double **data;
    unsigned char **Data_RGB;
    int nblig=600, nbcol=600;
    float min=0, max=0;
     
    ...
     
    Data_RGB=Calcul_ASHINDEX(min, max, data, nblig, nbcol);
    }
     
    unsigned char ** Calcul_ASHINDEX(float min, float max, double **data, int nblig, int nbcol)
    {
    int i, j;
     
    min=data[0][0];
    max=data[0][0];
    for (i=0;i<nblig;i++)
       {
       for (j=0;j<nbcol;j++)
          {
          if (data[i][j]<min) min=data[i][j];
          if (data[i][j]>max) max=data[i][j];
          }
       }
     
    ...
     
    return Data_RGB;
    }
    Ma question c'est comment récupérer les valeurs de min et max au retour dans le main ?

    Voilà j'espère que je suis assez clair, en espérant que vous pourrez m'aider !

    Merci

    Flaherty Mc Coillean

  2. #2
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    A mon avis deux solutions :

    - Soit tu déclare tes variables en dehors de ton main, tes variables seront globales, et modifiable par toutes tes fonctions.

    - Soit tu passe par des pointeurs.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
     
    void B(int* min)
    {
     
    *min = 4;
     
    }
     
    void A()
    {
     
    int min;
    min=0;
    B(&min);
    printf("%d",min);
    }
     
    int main()
    {
        A();
        return 0;
     
    }
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Quelle est la réelle utilité des globales dans ton programme ? Elles sont totalement injustifiées dans 99.999% des cas et sont une sources de problèmes.
    En principe, une fonction a une tâche spécifique à faire, on lui passe ce dont elle a besoin, et elle retourne ce dont la fonction appelante a besoin. Une fonction n'a en principe pas à lire quelque globale que ce soit, qui est modifiable par n'importe qui. En cas de bug, pour savoir qui a modifié quoi, c'est une belle prise de tête et on passe beaucoup plus de temps à débugguer. Sans globale, cela permet de tester les fonctions une par une et de vite repérer l'origine d'un problème.

    Ma question c'est comment récupérer les valeurs de min et max au retour dans le main ?
    Tu peux passer l'adresse d'une variable locale à ta fonction, ce qui lui permettra de modifier la valeur contenue à cette adresse (et donc de modifier "à distance" la valeur de ta variable).

  4. #4
    Membre confirmé Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Par défaut
    Merci je m'étais un peu perdu dans mon code et je n'y avais pas pensé, ça marche nickel !

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

Discussions similaires

  1. Problème variable globale
    Par nanoute dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/08/2009, 13h03
  2. Problème variable globale contenant un stream !
    Par palmitoto dans le forum Lisp
    Réponses: 4
    Dernier message: 25/04/2008, 05h40
  3. Problème variables globales
    Par jcatala dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 20/03/2008, 20h22
  4. problème variable globale
    Par logarithme1984 dans le forum C++
    Réponses: 10
    Dernier message: 17/01/2007, 10h22
  5. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41

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