ホームページ >バックエンド開発 >C++ >パラメータの変更は C の関数呼び出しにどのような影響を与えますか?

パラメータの変更は C の関数呼び出しにどのような影響を与えますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 19:02:15215ブラウズ

How Do Parameter Modifications Affect Calling Functions in C  ?

関数内のパラメーターの変更

関数内でパラメーターの値を変更すると、 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。