引用函数c ++中的变量

时间:2015-02-28 04:58:06

标签: c++ c++11 pass-by-reference

我正在努力确保我理解使用&符号来引用变量是什么。我知道其他类似的问题已被问到,但我想看看我给出的代码示例是否正确使用它。

示例代码:

 // 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”。

3 个答案:

答案 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)时,您将在内存中引用该位置,并直接从该函数修改其值。

基本上,主要问题是您声明变量的位置,以及您在函数调用中包含&符号的事实。