Passer une structure par reference

Résolu
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 1 juil. 2007 à 23:16
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 2 juil. 2007 à 01:14
Neo_Fr

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2007 à 00:11
void MaFct(MASTRUCT *Test)
{
Test->mavar = 1;
}

MASTRUCT test;
test.mavar = 0;
MaFct(&test); // SON ADRESSE

ça c'est en C.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2007 à 00:23
OUPS, j'avais encore zappé le titre....

typedef struct _MASTRUCT {
  int mavar;
} MASTRUCT;


void MaFct(MASTRUCT &Test)
{
  Test.mavar = 1;
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
  MASTRUCT s;
  char buf[4];
  s.mavar = 0;
  MaFct(s);
  buf[1] = 0;
  buf[0] = s.mavar + 48;
  MessageBox(0, buf, szappname, 0);
  return 0;
}

En faisant connaitre la signature de la fonction AVANT son 1er emploi dans le code, ça passe mieux (même ici par référence).

Le passage par référence est absolument identique en code généré par le compilo à celui explicitement écrit par pointeur.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2007 à 01:14
'->' c'est dans le cas: void MaFct(MASTRUCT *Test);
Si passage par ref alors c'est '.' obligé.

ciao...
BruNews, MVP VC++
3
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
1 juil. 2007 à 23:17
Bonjour,
J'ai un petit probleme avec ce code:

typedef struct _MASTRUCT
{
int mavar;
}MASTRUCT;

int Main(void)
{
MASTRUCT test;
test.mavar = 0
MaFct(test);
if(test.mavar)...
return 0;
}

void MaFct(MASTRUCT &Test)
{
Test.mavar = 1;
}

Ca compile pas: syntax error before '&' token


Neo_Fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 juil. 2007 à 00:57
Merci ca marche, mais quelle est la difference entre '->' et '.' et dans quel cas utiliser l'un et pas l'autre?

Neo_Fr
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2007 à 01:06
Aucune diff comme dit plus haut puisque compilo produira le meme code.

Je trouve le passage avec pointeurs nettement plus claire à la relecture d'un code, on voit de suite ce que l'on fait.

ciao...
BruNews, MVP VC++
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 juil. 2007 à 01:08
Je voulais parler de la difference entre '->' et '.'
MASTRUCT.mavar est-il equivalent a MASTRUCT->mavar ?
Est-ce qur sela produit le meme resultat?
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 juil. 2007 à 01:14
ok merci bocoup
0
Rejoignez-nous