Übergabe von Parametern als Referenz vs. Wert in einer Funktion
Betrachten Sie den folgenden Codeausschnitt:
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 diese Funktion wie folgt auf:
trans(center_x, center_y, angle, xc, yc);
und erwarten die Werte von xc und yc Wenn Sie etwas ändern, werden Sie enttäuscht sein. Dies liegt daran, dass Parameter in C standardmäßig als Wert übergeben werden, was bedeutet, dass alle an den Parametern innerhalb der Funktion vorgenommenen Änderungen nicht in den ursprünglich übergebenen Variablen widergespiegelt werden.
Um dieses Problem zu beheben, können Sie entweder die übergeben Parameter durch Referenz oder verwenden Sie Zeigerarithmetik.
Verwenden von Referenzen
In C können Sie Referenzen verwenden, um Parameter zu übergeben durch Verweis. Dadurch können Sie die ursprünglich übergebenen Variablen ändern. So ändern Sie die Funktion trans, um Referenzen zu verwenden:
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; }
Beachten Sie, dass die Parametertypen jetzt Referenzen auf double sind (d. h. double&).
Sie können die Funktion dann wie folgt aufrufen:
trans(center_x, center_y, angle, xc, yc);
Dadurch werden nun die Werte von xc und korrekt geändert yc.
Zeigerarithmetik verwenden
Eine andere Möglichkeit, Parameter in C per Referenz zu übergeben, ist die Verwendung der Zeigerarithmetik. Dies kommt häufiger in C vor, kann aber auch in C verwendet werden. So ändern Sie die Funktion trans, um Zeigerarithmetik zu verwenden:
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; }
Beachten Sie, dass die Parametertypen jetzt Zeiger auf double (d. h. double*) sind.
Sie können dann die aufrufen funktioniert wie folgt:
trans(center_x, center_y, angle, &xc, &yc);
Dadurch werden auch die Werte von xc und yc korrekt geändert.
Das obige ist der detaillierte Inhalt vonWie ändere ich Originalvariablen, wenn ich Parameter an eine C-Funktion übergebe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!