Perso j'utilise quasiment que ça et je crois pas que ce soit une bonne chose ^^' mais par rapport à ce que j'en fais et sais à mon niveau :
Si tu changes directement les valeurs t'as pas forcément besoin de retourner des valeurs.
Par exemple tu fais un personnage de jv avec une perte de pv et de pm :
void Perte_PV(int &pv)
{
pv -=10;
}
int Perte_pm(int pm)
{
return pm -= 5;
}
int main ()
{
int pv_personnage = 20;
int pm_personnage = 20;
Perte_PV(pv_personnage);
pm_personnage = Perte_pm(pm_personnage);
cout << pv_personnage << endl; // affiche 10
cout << pm_personnage; // affiche 15
}
Les pertes de PV tu les fait passer en référence dans la fonction void (utilisation du symbole &), donc la valeur de la variable pv_personnage utilisée dans la fonction principale changera directement, pas besoin de retourner de valeur dans ce cas là.
La perte de PM tu ne la changes pas directement, mais tu retournes la valeur de la fonction. Donc ça va créer une nouvelle variable temporaire (ici nommée pm ) dans la fonction Perte_pm, et on retourne la valeur de cette variable pm à la variable pm_personnage dans la fonction principale.
Donc ça dépend si tu veux retourner des valeurs, ou si tu changes directement la valeur de tes variables, mais cela nécessite de connaitre le système de pointeur et référence.
Après tu peux changer directement des variables dans une fonction qui retourne également quelque chose, genre une erreur d'initialisation ou autre.
Note, si tu dois modifier directement un tableau tu peux utiliser le signe du pointeur(*) au lieu de la référence (&) dans ton void :
void ValeursTableau(int *mon_tableau_a_modifier)
{
mon_tableau_a_modifier[0] = 55;
mon_tableau_a_modifier[1] = 33;
}
int main ()
{
int montableau[2];
ValeursTableau(montableau);
cout << "tableau 0 :" << montableau[0] << " tableau 1 : " << montableau[1];
}
Normalement ça t'affichera :
tableau 0 : 55 tableau 1 : 33
Message édité le 23 décembre 2019 à 17:07:25 par Shiba_the_Inu