2013-03-03 35 views
-3

好吧,我不知道如何从void类型中取出一个值,使其返回到使用参考变量的主类。我已经多次阅读教科书中的部分内容,但代码片断对我没有任何意义,并且其中并不是很多。有人可能会解释,或给一个简单的代码示例?了解参考变量是如何工作的

感谢

下面是代码我有,什么是应该发生的是,我应该利用我的主称为第一功能的用户拉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; 
} 
+1

你应该解释一下它到底是什么,你不明白。否则,我们只是在猜测你的意思。 – 2013-03-03 20:24:12

+1

不确定你的意思是“从void类型中取出一个值,使用一个引用将它返回到主体”。你能详细说明你想要做什么吗? (不要使用这本书的条款,只是说出来)。 – WhozCraig 2013-03-03 20:24:20

+0

呃。我编辑了它,然后意外地点击了回滚。让我再做一次........ – 2013-03-03 20:51:58

回答

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; 
    } 
} 

我觉得你的想法..

+0

谢谢,在教科书中有时难以区分什么是语法的实际部分,什么是作者的变量。 – 2013-03-03 21:10:47

0

我想解释的references想法的最好办法是思维的引用作为别名。这不是100%的真实,但对于初学者来说这是一个很好的寓言。

无论你对参考做什么,也是对原始对象做的。

所以你只要为同一个变量定义一个替代名称即可。

+0

我得到它是什么,我不明白的是使用它的语法。 :) – 2013-03-03 20:57:53

0

引用是现有对象的别名(别名),所以只能引用现有对象(必须被初始化)并且不能被重新分配给其他对象。 const指针符合这些条件并被编译器用来表示引用。 希望很明显。