passage de variable par adresse, Comment passer deux fonctions ?

passage de variable par adresse, Comment passer deux fonctions ? - C - Programmation

Marsh Posté le 04-05-2005 à 14:21:58    

Bonjour.
J'ai dans la fonction main 5 parametres declarés dans cette fonction, et je souhaite changer leur valeur dans une fonction parametrer(), elle meme appellée à partir d'une fonction menu().
 
Pour recapituler: les variables dont on sohaite changer la valeur sont dans main(), main appelle menu() qui lui appelle parametrer(), et parametrer() est chargé de changer les valeurs des 5 variables.
 Je sais que pour réaliser cela on fait un passage par adresse, mais cela n'est possible que pour passer une seule fonction, car ensuite comment passer l'adresse de menu() à parametrer() ?

Reply

Marsh Posté le 04-05-2005 à 14:21:58   

Reply

Marsh Posté le 04-05-2005 à 14:38:16    

tu utilises des pointeurs.

Reply

Marsh Posté le 04-05-2005 à 14:49:51    

elessar53 a écrit :

J'ai dans la fonction main 5 parametres declarés dans cette fonction,


J'ai déjà décroché.

  • La fonction main() admet 0 ou 2 paramètres (ou 3 mais c'est pas standard). Donc c'est pas ça.
  • Alors c'est quoi ces mystérieux 5 paramètres ? des variables locales dont on passe la valeur à une fonction via les 5 paramètres de cette fonction ?

Si tu veux te faire comprendre, essaye d'être un peu plus précis sur le choix des termes...

Citation :


et je souhaite changer leur valeur dans une fonction parametrer(), elle meme appellée à partir d'une fonction menu().
 
Pour recapituler: les variables dont on sohaite changer la valeur sont dans main(),  


Ah ben voilà. Pourquoi ne pas être clair tout de suite ?

Citation :


main appelle menu() qui lui appelle parametrer(), et parametrer() est chargé de changer les valeurs des 5 variables.
 Je sais que pour réaliser cela on fait un passage par adresse, mais cela n'est possible que pour passer une seule fonction, car ensuite comment passer l'adresse de menu() à parametrer() ?


Suivre les commentaires numerotés (1..3) :


void g (int *pi)
{
   if (pi)
   {
    /* 3 - dereferencer pour modifier la valeur pointee */
      (*pi)++;
   }
}
 
void f (int *pi)
{
    /* 2 - passer la valeur de pi (c'est une adresse) */
   g(pi);
}
 
int main (void)
{
   int a = 0;
 
    /* a vaut 0 */
 
    /* 1 - passer l'adresse  de a */
    f(&a);
 
    /* a vaut 1 */
 
   return 0;
}


Message édité par Emmanuel Delahaye le 04-05-2005 à 17:36:04

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 04-05-2005 à 15:18:25    

Désolé pour avoir appeller "parametre" des variables, mais dans mon programme ce sont des parametres de calcul  :sweat:  
Merci de ta reponse, je vais pouvoir m'en sortir !!!


Message édité par elessar53 le 04-05-2005 à 15:24:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed