了解引用变量的工作方式
Understanding how reference variables work
好吧,我在如何从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 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;
}
}
我想你已经明白了。。
我认为解释references
概念的最佳方式是将引用视为别名。这不是100%正确的,但对初学者来说,这是一个非常好的寓言。
对引用所做的操作也会对原始对象执行
所以您所要做的就是为同一个变量定义一个替代名称
Reference是现有对象的另一个名称(别名(,因此只能引用现有对象(必须初始化(,不能重新分配给其他对象。const指针满足这些条件,并由编译器用来表示引用。希望它是清楚的。
相关文章:
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- OpenGL应用程序在不同的计算机上的工作方式不同
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- wait_until在主线程而不是主线程中的工作方式不同吗? c ++
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 查找函数在unordered_map中的工作方式是搜索键值
- 尝试使用 Qt 库中的 QPixmap 将图像拆分为多个块。关于他的复制方法的工作方式,我有什么不明白的吗?
- 容器类别在STL中的工作方式
- Unity 的 HLSL/Cg 预处理器工作方式错误?
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 不了解C 集合的工作方式
- 有人可以解释C 操作员=此处的工作方式
- 了解 declval 在copy_assignment情况下的工作方式
- 打开文件的正确模式是什么,以便 seekp() 的工作方式与在默认模式下打开的文件相同
- 了解文件页在技术级别的工作方式
- 战俘的工作方式不同,详细解释
- 切换到新编译器后,SSCANF 的工作方式有所不同
- 为什么三元运算符在编译时的工作方式与运行时不同?
- 对运算符删除覆盖的工作方式感到困惑
- 在两种情况下,铸造的工作方式不同