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:
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);
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!