好吧,我遇到了如何从void类型中提取值以使用引用变量将其恢复为main的问题。我已经多次阅读了我的教科书中的部分,但代码剪断它给我的意义不大,而且它们并不是很多。有人可能会解释,或者给出一个简单的代码示例吗?
由于
这是我的代码,应该发生的是我应该使用我的main调用的第一个函数从用户那里得到5个测试分数。 main调用的下一个函数应该调用第三个函数,该函数确定最低的测试分数并将其从中间函数的计算中删除。
我尝试运行代码(仅使用文本存根和变量而不进行计算),但我的变量都显示为可以达到的最大数量,而不是用户输入它们被显示为。
#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;
}
答案 0 :(得分: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;
}
}
我想你明白了......
答案 1 :(得分:0)
我认为解释references
概念的最佳方式是将引用视为别名。这不是100%的真实,但对于初学者来说这是一个非常好的寓言。
无论您对引用做了什么,也都会对原始对象进行。
所以你要做的就是为同一个变量定义一个替代名称。
答案 2 :(得分:0)
引用是现有对象的另一个名称(别名),因此只能引用现有对象(必须初始化)并且不能重新分配给其他对象。 const指针满足这些条件,编译器使用它来表示引用。 希望很清楚。