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; }
If同じファイルから trans を次のように呼び出します:
trans(center_x,center_y,angle,xc,yc);
xc と yc の値は しません関数内で変更できます。これを実現するには、次の 2 つのオプションがあります。
C で参照を使用する:
アンパサンド (&) を追加します。関数内の各パラメータ m および n の前定義:
void trans(double x, double y, double theta, double& m, double& n)
呼び出し元では、アンパサンドなしで変数を渡します:
trans(center_x, center_y, angle, xc, yc);
ポインターを使用するC:
ポインターを受け入れるように関数定義を変更します。
void trans(double x, double y, double theta, double* m, double* n)
呼び出し元で、変数:
trans(center_x, center_y, angle, &xc, &yc);
いずれかの方法を使用すると、xc と yc の値は参照によって渡されるため、trans 関数内で変更されます。またはポインタ。これにより、関数は呼び出し元の元の変数を直接変更できるようになります。
以上がC で関数パラメータを変更し、呼び出し元の変更を反映するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。