【问题标题】:Understanding how reference variables work [closed]了解参考变量的工作原理[关闭]
【发布时间】:2013-02-17 21:10:17
【问题描述】:

好的,我对如何使用引用变量从 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;
}

【问题讨论】:

  • 你应该解释你不明白的到底是什么。否则,我们只是在猜测您的意思。
  • 不确定您所说的“从 void 类型中提取一个值以使用引用将其带回 main”是什么意思。您能否详细说明您正在尝试做什么? (不要使用书中的术语;直接说出来)。
  • 呃。我对其进行了编辑,然后不小心单击了回滚。让我再做一次…………
  • 那里。编辑以包含我拥有的代码。

标签: c++ pointers pass-by-reference void


【解决方案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;
    }
}

我想你明白了..

【讨论】:

  • 谢谢,有时在教科书中很难说语法的实际部分是什么,什么是作者的变量。
【解决方案2】:

引用是现有对象的另一个名称(别名),因此只能引用现有对象(必须初始化)并且不能重新分配给其他对象。 const 指针满足这些条件,并被编译器用来表示引用。 希望很清楚。

【讨论】:

    【解决方案3】:

    我认为解释references 的最佳方式是将引用视为别名。这不是 100% 正确的,但对于初学者来说,这是一个很好的寓言。

    无论你对引用做什么,也会对原始对象进行。

    所以你所做的就是为同一个变量定义一个替代名称。

    【讨论】:

    • 我明白它是什么,我不明白的是使用它的语法。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2012-12-11
    • 2011-02-18
    • 2018-02-17
    • 1970-01-01
    相关资源
    最近更新 更多