Parameteränderung innerhalb von Funktionen: Auswirkungen auf den Aufrufer
Beim Ändern eines Parameters innerhalb einer Funktion ist es wichtig, seine Auswirkungen auf den Aufrufer zu verstehen . Im dargestellten Codeausschnitt:
<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;
}
Aufrufen dieser Funktion mit trans(center_x,center_y,angle,xc,yc) ändert die Werte von xc und yc nicht direkt. Dies liegt daran, dass C Funktionsparameter nach Wert übergibt, was bedeutet, dass die Funktion eine Kopie der Variablen erhält.
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
1. In C:
Verwenden Sie Referenzen, um Parameter per Referenz zu übergeben und die ursprünglichen Variablen innerhalb der Funktion zu ändern:
<br>void trans(double x, double y, doppeltes Theta, doppeltes & m, doppeltes & 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. In C:
Übergeben Sie Parameter, indem Sie ihre Adressen explizit mithilfe von Zeigern übergeben:
<br>void trans(double x, double y, double theta, double<em> m, doppelt</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;
}
Mit diesen Änderungen wird der Aufruf von trans(center_x,center_y,angle,xc,yc) direkt aktualisiert die Werte von xc und yc. Wenn dieses Verhalten gewünscht ist, ist die Verwendung von Referenzen oder Zeigern erforderlich, um den gewünschten Effekt zu erzielen.
Das obige ist der detaillierte Inhalt vonWie wirken sich Parameteränderungen innerhalb einer Funktion auf die aufrufende Funktion in C und C aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!