関数内のパラメーターの変更
関数内でパラメーターの値を変更すると、 C の呼び出し関数に影響する場合とそうでない場合があります。次の例を考えてみましょう:
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; }
この関数を trans(center_x, center_y, angle, xc, yc) で呼び出すと、xc と yc は変更されますか?
C では、デフォルトのパラメータの受け渡し方法は値による呼び出しです。これは、引数のコピーが関数に渡されることを意味します。したがって、trans 内で m と n を変更しても、xc と yc には影響しません。
関数内のパラメーターへの変更が呼び出し元の関数に確実に反映されるようにするには、参照を使用できます。 C では、参照はポインターの代替手段を提供し、変数のエイリアスのように動作します。参照を使用すると、元の変数を直接変更できます。
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; } int main() { trans(center_x, center_y, angle, xc, yc); }
この場合、xc と yc が trans に渡されると、それらは元の変数のエイリアスとして扱われ、trans がその値を変更できるようになります。
C では、同様のアプローチで、変数の値の代わりにポインタまたはアドレスを変数に渡します。ただし、一般に C で参照を使用する方が便利で安全であると考えられています。
以上がパラメータの変更は C の関数呼び出しにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。