[C++] Aide sur passage de parametre...

Aide sur passage de parametre... [C++] - C++ - Programmation

Marsh Posté le 20-04-2002 à 11:09:56    

QQn peut il me dire la difference en C++ entre un:
 
void prog(int *);
 
et
 
void prog(int *&);
 
Merci!

Reply

Marsh Posté le 20-04-2002 à 11:09:56   

Reply

Marsh Posté le 20-04-2002 à 11:30:01    

Dans le premier cas le pointeur est passé par valeur, tandis que dans le second il est passé par référence.  
 
Par exemple:  

Code :
  1. void prog(int * p)
  2. {
  3.   int n = 0;
  4.   p = &n; // le pointeur reste inchangé dans le code appelant cette méthode  
  5. }
  6. void prog(int * &p)
  7. {
  8.   int n = 0;
  9.   p = &n; // le pointeur pointe sur l'adresse de n dans le code appelant (mais ça plantera car n sera désalloué à la fin de cette méthode)  
  10. }


 
C'est tout comme la différence entre int et int & par exemple, si ça peut t'éclaircir.
 
++@

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 20-04-2002 à 12:26:12    

ce serait plutôt:
 
paramètre passé par adresse:     function(int* var)  
par référence:                           function(int& var)        
Et là par valeur:                        function(int var)
 
 
un petit ex:
main()
{
int var=5;
reference(var);    
                       //var vaut 6
adresse(&var);
                       //var vaut 7
valeur(var);
                       //var vaut 7
}
référence(int& var)
{
 var++;
}
 
adresse(int* var)
{
 *var++;
}
valeur(int var)
{
  var++;
}
 
 
ces deux écriture sont identiques le passage par référence à été ajouté au langage C++ pour faciliter la manipulation et rendre transaparent l'utilisation d'un ptr.
 
 
Par contre ça connaît pas: int* &b       :ouch:

 

[jfdsdjhfuetppo]--Message édité par weblook$--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 20-04-2002 à 13:05:52    

Oups, quand je parlais de valeur je voulais dire la valeur du pointeur, c'est à dire l'adresse qu'il contient. J'avais généralisé:  
f(UnType param); -> valeur  
f(UnType & param); -> référence  
 
Dans UnType on peut mettre d'importe quel type comme int, int *, int **, string, etc.
 
int* &b c'est une référence vers un pointeur vers un int. :hello:

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Sujets relatifs:

Leave a Replay

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