我正在努力确保我理解使用&符号来引用变量是什么。我知道其他类似的问题已被问到,但我想看看我给出的代码示例是否正确使用它。
示例代码:
// function prototype
GetBalance(float &balance);
int main()
{
float balance;
bool choice = true;
if (choice == true)
GetBalance(float &balance);
else
cout << "error" << endl;
return 0;
}
GetBalance(float &balance)
{
cout << "please enter the balance: " << endl;
cin >> balance;
}
因此在main函数中声明了float变量。
函数GetBalance引用main函数中声明的变量。因此,当用户输入余额时,输入将分配给余额变量。
这是对的吗?
如果不是我想做的事情?
我想将GetBalance函数中输入的金额分配/传递给main()中声明的变量“balance”。
答案 0 :(得分:1)
您在
中的使用是正确的GetBalance(float &balance)
方法,但是你需要在main()中调用这样的方法:
GetBalance(balance);
由于该类型已在声明中定义。
此外,您可能希望使用以下命令进行错误检查:
cin >> balance;
检查用户是否输入了浮点值。
编辑您需要在函数上使用返回类型,例如
void GetBalance(float &balance)
答案 1 :(得分:1)
if(choice == true) GetBalance(浮动和平衡);
这种用法是错误的,应该更正为:
if (choice == true)
GetBalance(balance);
除了cosnstructors,C ++中的所有函数都应该有返回类型。因此,在这种情况下,函数声明和定义必须通过添加返回类型void
void GetBalance(float &balance);
最重要的是,你必须在程序中添加必需的头文件和命名空间才能进行编译。
#include<iostream>
using namespace std;
变量在C ++中是类型敏感的,因此您必须在函数定义中更改变量,如下所示:
void GetBalance(float &balance)
{
cout << "please enter the balance: " << endl;
cin >> balance;
}
进行上述更改后,此程序将进行编译。 那么对于你的问题,答案如下:
这样当用户输入余额时,输入就会分配给 平衡变量。
这是对的吗? 答:是的
答案 2 :(得分:1)
答案是你说得对不对。你想要的是像
float balance;
if(choice == true)
GetBalance(balance)
这种方式平衡仍然在main的范围内,否则它只会在函数调用内存活。现在,您可以在main中的任何位置使用float。
现在已经涵盖了这一点,我们可以讨论正在发生的事情。你正在声明一个名为balance的浮动。这保留了一个记忆的地方。将余额传递给函数GetBalance(float &Balance)
时,您将在内存中引用该位置,并直接从该函数修改其值。
基本上,主要问题是您声明变量的位置,以及您在函数调用中包含&符号的事实。