0

こんにちは、C++ に関するいくつかのことをよりよく理解できることを望んでいました。私たちは関数について学んでいますが、私はクラスを欠席しました。私はとても混乱しているので、欠席するのは間違ったクラスだったと思います. 明確で簡潔な指示と用語の理解に関して、2 つの問題があります。これは私の最初のものでした:

a) 渡された 2 つの整数値の積を計算する「product」という名前の C++ 関数を作成します。この関数は 2 つの入力引数を取り、計算された答えを関数の出力パラメーターとして返します。b) この関数を呼び出す (呼び出す) ために使用できる 1 行のコードを記述します。

これは 2 番目のものです: a) 渡された 2 つの整数値の積を計算する「product」という名前の C++ 関数を作成します。この関数は 2 つの入力引数を取り、関数の実行結果として積の答えを返します。b) この関数を呼び出す (呼び出す) ために使用できる 1 行のコードを記述します。

だから私の推測では、2番目のものは次のようなものになるはずです:

 int product(int a, int b)
 { return a*b; }

cout << "2 つの数値の積は " << product(a,b); です。

まず、私は正しいですか、どちらにしても、出力パラメーターとして応答を返すことの意味は何ですか。そして、私がいて、あなたが私に同情したいと感じている間、私は int の代わりに void を使用すべきか教えてください。パラメータの最後に&が必要であり、「技術的に」それを返すだけでなく変更できるようにする必要があることについての全体的な側面を理解していますが、もう少し詳細な何かを望んでいましたか? とても困って申し訳ありませんが、どんな助けでも大歓迎です。ありがとうリンダ

PS私は宿題としてタグ付けしたでしょうが、それは廃止されました. ごめん!

4

2 に答える 2

1

出力パラメーターは、関数からデータを送り返すもう 1 つの方法です。基本的に、値を返すのではなく、関数に答えが入るボックスを送信します。答えをボックスに入れるとそれが変更され、関数の実行後に答えを取得できます。

「標準」の戻り値(あなたがしたように):

int product(int a, int b)
{ return a*b; }

標準関数の呼び出し:

int answer = product(10, 5);
cout << answer << endl;

「出力パラメーター」: 実際の値 (5 や 3 など) として渡す代わりにanswer、回答が送信されるボックスを送信します。このボックスの内容を変更すると、関数内の変数の値も変更されます (これはの代わりにmain示されます)。int & answerint answer

void product_output_parameter(int a, int b, int & answer)
{ answer = a*b; }

関数の呼び出し:

int answer;
// send answer in as a place to put the answer
product_output_parameter(10, 5, answer);
// the value stored in answer has changed
cout << answer << endl;

関数が次のように定義されている場合:

void product_output_parameter(int a, int b, int answer)
{ answer = a*b; }

への変更answerは関数内でのみ発生するため、機能しません。

お役に立てれば!

于 2012-11-20T03:52:39.540 に答える
0

あなたが書いた関数は、製品を計算し、製品関数を呼び出します。このように呼び出すこともできます。

int productOfAandB = product(a,b);

参照により、呼び出し元から呼び出し先のスコープ内の変数を変更できます。古典的な例は、ボブを更衣室に送って体育の着替えをすることです。この手順では、ボブは単に更衣室に行き、着替えます。その後、ボブにそうするように指示した手順が、変更されたボブで続行されます。Bob がロッカー ルームにコピーされ、元の Bob を置き換えてロッカー ルームから返された場合、戻り値関数のように動作します。

  1. 値渡し、値渡し BOB = changForPE(BOB);// これにより、実質的に BOB がまったく新しい BOB に置き換えられます。
  2. 参照渡し changeForPE(&BOB);// この関数には、BOB に格納されている変数に対して何かを行う機能があります //しかし、BOB 変数を上書きしているようには見えません
于 2012-11-20T03:53:58.933 に答える