【问题标题】:Referencing a variable in a function c++在函数c ++中引用变量
【发布时间】:2015-02-28 04:58:06
【问题描述】:

我试图确保我了解使用 & 符号来引用变量是什么。我知道有人问过其他类似的问题,但我想看看我给出的代码示例是否正确使用它。

示例代码:

 // 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;

}

所以在主函数中声明了浮点变量。

函数 GetBalance 引用在主函数中声明的变量。这样当用户输入余额时,输入就被分配给余额变量。

这对吗?

如果不是,我想做的事情可能吗?

我想将在 GetBalance 函数中输入的金额分配/传递给 main() 中声明的变量“balance”。

【问题讨论】:

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


    【解决方案1】:

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

    这个用法是错误的,应该改成如下:

     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;
    
    }
    

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

    这样当用户输入余额时,输入被分配给 平衡变量。

    这是正确的吗? 答:是的

    【讨论】:

    • @kronis72 您没有向调用函数返回任何内容。引用的工作方式是它会更改传入变量的内存位置的值,因此您不需要返回该值。您的函数签名中必须有一个返回说明符,在这种情况下,它不会返回任何内容,因此您需要使用 void。
    • 非常感谢!!我删除了之前的评论以重新表达我想问的内容,但您已经回答了我之前......再次感谢您的帮助!
    【解决方案2】:

    你的用法是正确的

    GetBalance(float &balance)
    

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

    GetBalance(balance);
    

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

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

    cin >> balance;
    

    检查用户是否输入了浮点值。

    编辑你的函数需要一个返回类型,比如

    void GetBalance(float &balance)
    

    【讨论】:

      【解决方案3】:

      答案是你没有完全正确。你想要的是类似的东西

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

      这种方式 balance 仍然在 main 的范围内,否则只会在函数调用内部存活。现在您可以在 main 中的任何位置使用 float。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 2013-12-03
        • 2011-06-21
        • 1970-01-01
        • 2013-07-02
        相关资源
        最近更新 更多