Maison >développement back-end >C++ >Comment les modifications de paramètres à l'intérieur d'une fonction affectent-elles la fonction appelante en C et C ?

Comment les modifications de paramètres à l'intérieur d'une fonction affectent-elles la fonction appelante en C et C ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 22:57:18544parcourir

How Do Parameter Modifications Inside a Function Affect the Calling Function in C and C  ?

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>
<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>
<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>
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn