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
Freigeben: 2024-12-18 22:57:18
Original
524 Leute haben es durchsucht

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>
<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;
Nach dem Login kopieren
Nach dem Login kopieren

}

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;
Nach dem Login kopieren
Nach dem Login kopieren

}

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;
Nach dem Login kopieren

}

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!

Quelle:php.cn
Vorheriger Artikel:Wie konvertiert XORing mit 32 Groß- und Kleinschreibung effizient in ASCII? Nächster Artikel:Wie entferne ich Elemente während der Iteration sicher aus einer std::list?
Erklärung dieser Website
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage