Modification de paramètres au sein des fonctions : impact sur l'appelant
Lors de la modification d'un paramètre au sein d'une fonction, il est crucial de comprendre son effet sur l'appelant . Dans l'extrait de code présenté :
<br>void trans(double x,double y,double theta,double m,double n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y;
}
appeler cette fonction avec trans(center_x,center_y,angle,xc,yc) ne modifie pas directement les valeurs de xc et yc. Cela se produit parce que C transmet les paramètres de la fonction par valeur, ce qui signifie que la fonction reçoit une copie des variables.
Pour résoudre ce problème, vous avez deux options :
1. En C :
Utiliser des références pour passer des paramètres par référence, en modifiant les variables d'origine au sein de la fonction :
<br>void trans(double x, double y, double thêta, double& m, double& n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y;
}
2. En C :
Passez les paramètres en passant explicitement leurs adresses à l'aide de pointeurs :
<br>void trans(double x, double y, double theta, double<em> m, double</em> n)<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">*m=cos(theta)*x+sin(theta)*y; *n=-sin(theta)*x+cos(theta)*y;
}
Avec ces modifications, l'appel de trans(center_x,center_y,angle,xc,yc) mettra directement à jour les valeurs de xc et yc. Si ce comportement est souhaité, l'utilisation de références ou de pointeurs est nécessaire pour obtenir l'effet souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!