Variables et fonctions. Déclaration & Accéssibilité !

Résolu
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 - 6 mai 2007 à 02:03
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 - 6 mai 2007 à 02:52
Bonsoir,
je souhaiterai savoir comment accédé a une variable déclaré dans une autre fonction.
Faut t'il le spécifier lors de la déclaration de la variable dans la fonction,
ou faut t'il plutot le spécifier lors de la tentative de lecture de la variable?

Exemple :

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void test( void )
{
    déclaration de la variable Azerty;
                               Azerty = le_contenue;
};

int main( void )
{
    test();
    lecture_de Azerty;
};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2 réponses

THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
6 mai 2007 à 02:40
Une variable locale (déclarée dans une fonction) est par définition hors de portée (inaccessible) pour les autres fonctions. Si tu souhaites lire ta variable azerty:
- soit test() retourne cette variable et alors elle peut etre lue par la fonction appelant test().

Exemple si azerty est un int:

int test( void )
{
   int Azerty;
   Azerty = 4;
   return azerty;

};

int main( void )
{
   int valeur_lue;
   valeur_lue = test();
};

- soit tu crées une variable globale, c'est à dire déclarée en dehors de toute fonction et donc à portée (accessible) de toute les fonctions. Cependant cette méthode n'est en général pas tres conseillée car dangereuse, on controle assez mal la valeur de azerty.

Exemple:

int Azerty;

void test( void )
{
   Azerty = 4;
};

int main( void )
{
   int valeur_lue;
   test();

   valeur_lue = azerty;
}

- soit tu passes ta variable en parametre de test(). Tu dois alors manipuler les pointeurs car sinon tu modifie une copie de azerty et pas azerty elle-meme.

Exemple:

void test( int * azerty )
{
   *azerty = 4;

};

int main( void )
{
   int valeur_lue;
   
   test( & valeur_lue );
};

- si tu travailles en C++ tu peux utiliser les références au lieu des pointeurs, c'est souvent plus pratique.

Exemple:

void test( int & azerty )
{
   azerty = 4;

};

int main( void )
{
   int valeur_lue;
   
   test( valeur_lue );
};
<endl></endl>
3
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
6 mai 2007 à 02:52
Merci , pour l'info..... 
0
Rejoignez-nous