Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1252 connectés 

  FORUM HardWare.fr
  Programmation
  C

  passage de variable par adresse, Comment passer deux fonctions ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage de variable par adresse, Comment passer deux fonctions ?

n°1071734
elessar53
con comme un drapeau
Posté le 04-05-2005 à 14:21:58  profilanswer
 

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() ?

mood
Publicité
Posté le 04-05-2005 à 14:21:58  profilanswer
 

n°1071757
Taz
bisounours-codeur
Posté le 04-05-2005 à 14:38:16  profilanswer
 

tu utilises des pointeurs.

n°1071789
Emmanuel D​elahaye
C is a sharp tool
Posté le 04-05-2005 à 14:49:51  profilanswer
 

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/
n°1071893
elessar53
con comme un drapeau
Posté le 04-05-2005 à 15:18:25  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  passage de variable par adresse, Comment passer deux fonctions ?

 

Sujets relatifs
[VC++] Affecter 1 adresse connue au pointeur d'1 structurePasser de VS.Net 2003 à VS.Net 2005 peut-il se faire gratuitement?
transmission de plusieurs variable par l'urlPassage d'un tableau dans une url ?!?!
DLL, OLE & fonctions exportées[Java]Comment passer par référence un int ?
[Perl] switch() vs hash de fonctionsMa fonction "détruit" ma variable !
Séparation d'une variable date 1902 en 19 et 02 comment ?Comment passer des paramètres dans des scripts ?
Plus de sujets relatifs à : passage de variable par adresse, Comment passer deux fonctions ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR