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

  FORUM HardWare.fr
  Programmation
  C

  Passage d'une structure en argument de fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'une structure en argument de fonction

n°2228314
hungergame​s
Posté le 18-05-2014 à 10:29:18  profilanswer
 

Bonjour. J'ai créer  une structure dans mon .h:
 

Code :
  1. struct chose {
  2.     int x; // pour l'exemple
  3.     int y;
  4. };
  5. typedef struct chose chose;


 
Dans mon main, j'ai initialisé une variable de type chose, que j'ai passé a une fonction void de maniére a pouvoir modifier cette structure dans la fonction (je croit qu'on dit en "paramétre d'entrée/sortie" ):
 
MAIN:

Code :
  1. chose machose;
  2. int valeur;
  3. fonction1(&machose);
  4. valeur = machose.x;
  5. printf("%d", valeur);


 
Et voici le code de "fonction1" et de "fonction2":
 

Code :
  1. void fonction1(chose *p_machose) {
  2. (p_machose->x) = 5;
  3. fonction2(p_machose); // c'est déjà une adresse, je ne met pas de &, erreur?
  4. }
  5.  
  6. void fonction2(chose p_machose) { // erreur?
  7. (p_machose->x)++;
  8. }


 
C'est a ce moment que j'ai un problème, même si sur cet exemple c'est inutile, je veut passer ma structure a une autre fonction que j'appelle dans fonction 1, mais de façon a pouvoir toujours modifier ses valeurs a l'intérieur de fonction2. Or, je n'y parvient pas, j'ai donc du faire une erreur dans les paramètres de la 2éme fonction ? Ou alors, il s'agit d'une erreur dans la notation de l’accès au champ.
 
Ça ne doit pas être très compliqué mais je n'y arrive pas... Sauriez vous résoudre mon problème ?
 
Merci d'avance et bon dimanche !

mood
Publicité
Posté le 18-05-2014 à 10:29:18  profilanswer
 

n°2228319
Farian
Posté le 18-05-2014 à 11:27:36  profilanswer
 

Bonjour !
 
Vous avez eu exactement le même problème l'autre fois (http://forum.hardware.fr/hfr/Progr [...] 1998_1.htm), la réponse sera la même : si vous voulez modifier la structure dans "fonction2", passez un pointeur, pas une copie ! D'autant plus que vous l'avez fait correctement pour "fonction1".
 
A bientôt pour un 3ème post sur le même problème ? :) :) :)
 
Bonne continuation !

n°2228323
hungergame​s
Posté le 18-05-2014 à 13:47:48  profilanswer
 

Bonjour, merci pour votre aide ! Je n'avais pas vu cette erreur (qui est bête en plus). Ça fonctionne très bien maintenant.
 
Par contre, je ne suit pas "kolorius" qui avait visiblement eu un probléme similaire dans le lien que vous me donnez :)

n°2228334
Farian
Posté le 18-05-2014 à 22:11:43  profilanswer
 

En effet, j'ai honteusement confondu ... Note pour la suite : attendre d'être bien réveillé avant de faire le donneur de leçons sur le forum !
 
Toutes mes excuses et bonne continuation !


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

  Passage d'une structure en argument de fonction

 

Sujets relatifs
Coller des données en fonction N°semExcel : Alimenter une colonne en fonction de deux critères
Comment afficher un résultat en fonction du choix de l'utilisateurFonction include pour un fichier html
Passage de paramètre entre procédure stockée et script Phppassage d'une variable dans une autre Form
passer une liste en argumentProblème argument fonction slope (vba)
Probleme sur la fonction get pour un Httprequest 
Plus de sujets relatifs à : Passage d'une structure en argument de fonction


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