-3

さて、参照変数を使用して値を void 型から引き出してメインに戻す方法がわかりません。教科書のセクションを何度か読みましたが、そこにあるコードの切り取りは意味がなく、あまり多くありません。誰かが説明したり、簡単なコード例を挙げたりできますか?

ありがとう

ここに私が持っているコードがあります。メインによって呼び出される最初の関数を使用して、ユーザーから 5 つのテスト スコアを取得することになっています。main によって呼び出される次の関数は、最低のテスト スコアを決定し、中間関数の計算からそれを削除する 3 番目の関数を呼び出すことになっています。

コードを実行してみました (テキスト スタブと計算なしの変数のみを使用) が、私の変数はすべて、表示されることが想定されているユーザー入力ではなく、最大値である巨大な数として表示されます。

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

int main()
{
double score1, score2, score3, score4, score5, average;

void getScore(double &);
void calcAverage(double &);
int findLowest();

getScore(score1);
getScore(score2);
getScore(score3);
getScore(score4);
getScore(score5);

calcAverage(average);

cout<<"Let's see what we have here.\n"            <<score1<<endl<<score2<<endl<<score3<<endl<<score4<<endl<<score5<<endl<<average;
system("pause");
return 0;
}

void getScore(double &)
{
double score;

cout<<"Please enter a test score.";
    cin>>score;
    while(score<0 || score>100)
    {
        cout<<"Please enter a valid score.";
        cin>>score;
    }
}

void calcAverage(double &)
{
int findLowest();
double lowest;

cout<<"Yes, I'm a stub.";
lowest = findLowest();
}

int findLowest()
{
cout<<"I'm a stub too!";
return 5;
}
4

3 に答える 3

1

関数は次のように記述する必要があります。

void getScore(double &refScore) //!!
{
    //double score;

    cout<<"Please enter a test score.";

    cin>>refScore;
    while(refScore<0 || refScore>100)
    {
        cout<<"Please enter a valid score.";
        cin>>refScore;
    }
}

私はあなたがアイデアを得ると思います..

于 2013-03-03T21:04:58.117 に答える
0

の考え方を説明する最良の方法はreferences、参照をエイリアスと考えることだと思います。それは 100% 真実ではありませんが、まず第一に、それは非常に良い寓話です。

参照に対して行うことはすべて、元のオブジェクトに対しても行われます。

したがって、同じ変数に別の名前を定義するだけです。

于 2013-03-03T20:23:27.830 に答える
0

参照は既存のオブジェクトの別の名前 (エイリアス) であるため、既存のオブジェクトのみを参照でき (初期化する必要があります)、他のオブジェクトに再割り当てすることはできません。const ポインターはこれらの条件を満たし、参照を表すためにコンパイラーによって使用されます。それが明確であることを願っています。

于 2013-03-03T20:32:19.600 に答える