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

C 関数にパラメータを渡すときに元の変数を変更するにはどうすればよいですか?

DDD
リリース: 2024-12-27 04:28:28
オリジナル
345 人が閲覧しました

How Do I Modify Original Variables When Passing Parameters to a C   Function?

関数での参照によるパラメーターの受け渡しと値によるパラメーターの受け渡し

次のコード スニペットを考えてみましょう。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート