Heim >Backend-Entwicklung >C++ >Wie wirken sich Parameteränderungen innerhalb einer Funktion auf die aufrufende Funktion in C und C aus?

Wie wirken sich Parameteränderungen innerhalb einer Funktion auf die aufrufende Funktion in C und C aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 22:57:18528Durchsuche

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn