如何在一个函数中定义一个变量并在另一个函数中访问和更改它?(C ++)

时间:2019-11-25 01:58:23

标签: c++ function variables

我想知道如何在一个函数中定义变量并在另一个函数中访问和更改它。 例如:

#include <iostream>

void GetX()
{
   double x = 400;
}

void FindY()
{
   double y = x + 12;
}

void PrintXY()
{
   std::cout << x;
   std::cout << y;
}

int main()
{
   GetX();
   FindY();
   PrintXY();
}

我将如何从所有函数中访问这些变量?(显然,要在现实生活中正常工作,我不需要那么多函数,但是我认为这是一个很好的简单示例)。 提前感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

使用函数参数将值传递给函数并返回值以返回结果:

#include <iostream>

double GetX()
{
    return 400;
}

double FindY(double x)
{
    return x + 12;
}

void PrintXY(double x, double y)
{
    std::cout << x;
    std::cout << y;
}

int main()
{
    double x = GetX();
    double y = FindY(x);
    PrintXY(x, y);
}

答案 1 :(得分:1)

由于问题被标记为C++,因此这是另一个选择:

#include <iostream>
class Sample
{
public:
    void FindY()
    {
        y = x + 12;
    }

    void PrintXY()
    {
        std::cout << x;
        std::cout << y;
    }
private:
    double x = 400, y;
};

int main()
{
    Sample s;
    s.FindY();
    s.PrintXY();
}

答案 2 :(得分:0)

1,将x,y设为static,以便在函数返回时这些都存在。 第二,获取参考,修改功能或在功能之外做一些事情。

#include <iostream>

double &GetX()
{
   static double x = 400;
   return x;
}

double &FindY( double x )
{
    static double y;
    y = x + 12;
    return y;
}

void PrintXY(double x, double y ) 
{
   std::cout << x;
   std::cout << y;
}

int main()
{
   double &x = GetX();
   double &y = FindY( x );
   // Now you can modify x, y, from Now On..
   // .....

   PrintXY( x, y );
}

顺便说一句,我不推荐这种样式的代码。

答案 3 :(得分:0)

您要在一个函数中定义一个变量:这意味着您要将变量设置为该函数的局部变量。

您要从另一个函数访问并更改该局部变量。这不是平常的。技术上可行,但可以通过更好的资源管理/设计来完成。

*您可以将变量设为班级成员并使用它。

*您也可以将变量设置为全局变量来共享。

*以棘手的方式:

x <- structure(list(New_Name_List = c("bumiputera", "bumiputera", 
"non bumiputera", "chinese"), Old_Name_List = c("bumiputera (muslims)", 
"bumiputera (other)", "non bumiputera (indigenous)", "chinese"
)), class = "data.frame", row.names = c(NA, -4L))

y <- structure(list(EPR_country_code = c(835L, 835L, 835L, 835L), 
EPR_country = c("Brunei", "Brunei", "Brunei", "Brunei"), 
EPR_group_lower_2 = c("bumiputera (muslims)", "bumiputera (other)", 
"non bumiputera (indigenous)", "chinese")), class = "data.frame", 
row.names = c(NA, -4L))