我正在尝试使用一个函数(让我们称之为“循环”),除其他外,它负责递增一个变量,该变量表示我的程序自启动以来执行的迭代次数(它是FDTD模拟) 。我需要使用这个迭代器变量来在我的程序中的另一个函数中进行决策,例如,如果已完成一定数量的迭代,则执行一些操作。
我知道如何通过引用将变量从main传递给函数,但我不知道如何使用从main调用的另一个函数检查此变量的值。
这引出了以下问题:
如果我通过引用将变量传递给两个函数,两者都会始终拥有变量的最新副本吗?
如果我使用在main之外定义的全局变量(我知道这是不好的做法),函数是否可以修改该变量的值?如果它需要通过引用传递给函数,怎么办呢?
是否有其他方法可以维护两个或多个不涉及上述方法之一的函数可用的同步正确变量值?
答案 0 :(得分:1)
如果我通过引用将变量传递给两个函数,两者都会始终拥有变量的最新副本吗?
他们将引用相同的变量,因此,是的。当一个人修改变量时,另一个人将能够读取新的“同步”值。
如果我使用在main之外定义的全局变量(我知道这是不好的做法),函数是否可以修改该变量的值?
是的,但不要使用全局变量。
如果它需要通过引用传递给函数,该怎么做呢?
就像接收函数的输入一样容易作为参考:
void func(int&); // example
// ^
是否有其他方法可以维护两个或多个不涉及上述方法之一的函数可用的同步正确变量值?
更改一个类可能是一个更好的主意,这样你也可以保护你的同步变量不受外部编辑的影响:
class your_class {
private:
T synchronized;
public:
void func_one();
void func_two();
};
但这实际上取决于你实际想要完成的事情。
答案 1 :(得分:0)
我知道如何通过引用将变量从main传递给函数,但我不知道如何使用从main调用的另一个函数检查此变量的值。
是的,您可以在两个不同的功能中访问相同的变量。因为你的两个函数是由main()依次调用的。如果您的工作是用于模拟,则可能不需要全局。
main()
{
int cnt;
loop(int &cnt)
action(int &cnt)
}
您可以通过全局变量实现相同的目标。