ホームページ >バックエンド開発 >C++ >C で関数パラメータを変更し、呼び出し元の変更を反映するにはどうすればよいですか?

C で関数パラメータを変更し、呼び出し元の変更を反映するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-10 12:16:10209ブラウズ

How Can I Modify Function Parameters and Reflect Changes in the Caller in 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;
}

If同じファイルから trans を次のように呼び出します:

trans(center_x,center_y,angle,xc,yc);

xc と yc の値は しません関数内で変更できます。これを実現するには、次の 2 つのオプションがあります。

  1. C で参照を使用する:

    • アンパサンド (&) を追加します。関数内の各パラメータ m および n の前定義:

      void trans(double x, double y, double theta, double& m, double& n)
    • 呼び出し元では、アンパサンドなしで変数を渡します:

      trans(center_x, center_y, angle, xc, yc);
  2. ポインターを使用する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 サイトの他の関連記事を参照してください。

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