Heim >Backend-Entwicklung >C++ >Wie kann ich Funktionsparameter ändern und Änderungen im Aufrufer in C widerspiegeln?

Wie kann ich Funktionsparameter ändern und Änderungen im Aufrufer in C widerspiegeln?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 12:16:10209Durchsuche

How Can I Modify Function Parameters and Reflect Changes in the Caller in C  ?

Parameteränderung in Funktionen: Auswirkungen für den Aufrufer

In C werden an eine Funktion übergebene Parameter normalerweise nach Wert kopiert. Dies bedeutet, dass alle am Parameter innerhalb der Funktion vorgenommenen Änderungen keinen Einfluss auf den ursprünglichen Wert im Aufrufer haben.

Im angegebenen Code ist die Trans-Funktion wie folgt definiert:

void trans(double x,double y,double theta,double m,double n)
{
    m=cos(theta)*x+sin(theta)*y;
    n=-sin(theta)*x+cos(theta)*y;
}

If Sie rufen trans aus derselben Datei auf wie:

trans(center_x,center_y,angle,xc,yc);

die Werte von xc und yc werden nicht innerhalb der geändert Funktion. Um dies zu erreichen, haben Sie zwei Möglichkeiten:

  1. Referenzen in C verwenden:

    • Fügen Sie ein kaufmännisches Und (&) hinzu. vor jedem Parameter m und n in der Funktionsdefinition:

      void trans(double x, double y, double theta, double& m, double& n)
    • In Übergeben Sie dem Aufrufer die Variablen ohne das kaufmännische Und:

      trans(center_x, center_y, angle, xc, yc);
  2. Verwenden Sie Zeiger in C:

    • Ändern Sie die Funktionsdefinition in „Akzeptieren“. Zeiger:

      void trans(double x, double y, double theta, double* m, double* n)
    • Übergeben Sie im Aufrufer die Adresse der Variablen:

      trans(center_x, center_y, angle, &xc, &yc);

By Bei beiden Methoden werden die Werte von xc und yc innerhalb der Trans-Funktion geändert, da sie jetzt als Referenz oder Zeiger übergeben werden. Dadurch kann die Funktion die ursprünglichen Variablen im Aufrufer direkt ändern.

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionsparameter ändern und Änderungen im Aufrufer in C widerspiegeln?. 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