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

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

Barbara Streisand
リリース: 2024-12-18 22:57:18
オリジナル
524 人が閲覧しました

How Do Parameter Modifications Inside a Function Affect the Calling Function in C and C  ?

関数内のパラメータ変更: 呼び出し元への影響

関数内のパラメータを変更する場合、呼び出し元への影響を理解することが重要です。提示されたコード スニペット:

<br>void trans(double x,double y,double theta,double m,double n)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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 が関数パラメーターを値で渡すため、つまり関数が変数のコピーを受け取るために発生します。

これに対処するには、2 つのオプションがあります:

1。 C の場合:

参照を使用してパラメーターを参照渡しし、関数内の元の変数を変更します:

<br>void trans(double x, double y,ダブルシータ、ダブル&m、ダブル& n)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">m=cos(theta)*x+sin(theta)*y;
n=-sin(theta)*x+cos(theta)*y;
ログイン後にコピー
ログイン後にコピー

}

2. C の場合:

ポインターを使用してアドレスを明示的に渡すことでパラメーターを渡します:

<br>void trans(double x, double y, double theta, double う、ダブル<em> n)</em>{<br></p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">*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 および C の呼び出し関数にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:32 を使用した XOR 演算はどのようにして ASCII の大文字と小文字を効率的に変換しますか? 次の記事:反復中に std::list から要素を安全に削除するにはどうすればよいですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート