在函数 C++ 中引用变量

Referencing a variable in a function c++

我正在努力确保我了解使用“&”号来引用变量的含义。我知道有人问过其他类似的问题,但我想看看我给出的代码示例是否使用正确。

示例代码:

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

你在

中的用法是正确的
GetBalance(float &balance)

方法,但是您需要在 main() 中调用这样的方法:

GetBalance(balance);

因为声明中已经定义了类型。

此外,您可能希望通过以下方式进行一些错误检查:

cin >> balance;

检查用户输入的是浮点值。

编辑 你需要在函数上输入 return,比如

void GetBalance(float &balance)

如果(选择==真) GetBalance(浮动 &balance);

这个用法是错误的,应该更正为:

 if (choice == true)
         GetBalance(balance);

除了 cosnstructors,C++ 中的所有函数都应该有 return 类型。因此,在这种情况下,函数声明和定义必须更正如下,方法是添加 return type void

void GetBalance(float &balance);

最重要的是,您必须在程序中添加所需的头文件和命名空间才能进行编译。

#include<iostream>
using namespace std;

变量在 C++ 中是类型敏感的,因此您必须按如下方式更改函数定义中的变量:

void GetBalance(float &balance)
{
    cout << "please enter the balance: " << endl;
    cin >> balance;

}

在您进行上述更改后,该程序将通过编译。 那么对于你的问题答案如下:

So that when the user enters a balance, the input is assigned to the balance variable.

Is this correct? Ans : Yes

答案是您还没有完全正确。你想要的是

float balance;

if(choice == true)
    GetBalance(balance)

这样balance还是在main的范围内,否则只会在函数的调用里面存活。现在您可以在 main 中的任何地方使用 float。

既然已经涵盖了这些,我们可以讨论正在发生的事情。您正在声明一个名为 balance 的浮点数。这在内存中保留了一个位置。当您将 balance 传递给函数 GetBalance(float &Balance) 时,您将引用内存中的那个位置,并直接从该函数修改它的值。

本质上,主要问题是您在哪里声明了变量,以及您在函数调用中包含了一个符号。