Heim > Backend-Entwicklung > C++ > Wie ändere ich Originalvariablen, wenn ich Parameter an eine C-Funktion übergebe?

Wie ändere ich Originalvariablen, wenn ich Parameter an eine C-Funktion übergebe?

DDD
Freigeben: 2024-12-27 04:28:28
Original
345 Leute haben es durchsucht

How Do I Modify Original Variables When Passing Parameters to a C   Function?

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

If Sie rufen diese Funktion wie folgt auf:

trans(center_x, center_y, angle, xc, yc);
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage