関数での参照によるパラメーターの受け渡しと値によるパラメーターの受け渡し
次のコード スニペットを考えてみましょう。
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この関数を次のように呼び出します:
trans(center_x, center_y, angle, xc, yc);
そして期待しますxc と yc の値を変更すると、がっかりするでしょう。これは、C ではパラメータがデフォルトで値によって渡されるためです。つまり、関数内のパラメータに加えられた変更は、渡された元の変数には反映されません。
この問題を解決するには、次のいずれかを実行できます。パラメータを参照するか、ポインタ演算を使用します。
参照の使用
C では、次のことができます。参照を使用してパラメータを参照渡しします。これにより、渡された元の変数を変更できます。参照を使用するように trans 関数を変更する方法は次のとおりです。
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; }
パラメーターの型が double (つまり、double&) への参照になっていることに注意してください。
その後、次のように関数を呼び出すことができます:
trans(center_x, center_y, angle, xc, yc);
これにより、xc と の値が正しく変更されます。 yc.
ポインター演算の使用
C でパラメーターを参照によって渡すもう 1 つの方法は、ポインター演算を使用することです。これは C でより一般的ですが、 C でも使用できます。ポインター演算を使用するように trans 関数を変更する方法は次のとおりです。
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; }
パラメーターの型が double (つまり double*) へのポインターになっていることに注意してください。
その後、次のような関数:
trans(center_x, center_y, angle, &xc, &yc);
これにより、xc と の値も正しく変更されます。そうだね
以上がC 関数にパラメータを渡すときに元の変数を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。