假设我有一个简单的控制台程序如下:
(尚未测试过,它可能包含错误,因为我是新手)
#include <iostream>
using namespace std;
void startProgram();
int main(){
a = 20; //I want to somehow set this so that I can use it in any other function
//without passing it through like startProgram(a);
startProgram();
return 0;
}
void startProgram(){
cout << a << endl;
}
那么...我该如何制作才能更改“a”的值或打印它或执行任何操作而不将其传递到每个函数?
如果已经有这样的问题,我很抱歉,我毫不怀疑,但我找不到任何问题!
提前致谢!
实际上只有两种方法:全局变量或参数传递。
如果将变量声明为全局变量,即在任何函数外部(以及之前)的全局范围内,则所有函数都可以使用它。但是,应尽可能少地使用全局变量。相反,我真的建议您将其作为参数传递,如果其他函数稍后需要使用该变量,则继续将其作为参数传递。
或者,当然,既然您使用的是 C++,为什么不定义一个类并使变量成为该类的成员呢?然后,您可以将所有相关函数放入此类中,并且所有人都可以使用该变量,而无需将其设为全局变量或将其作为参数传递。
您可以通过将全局变量与函数一起放入命名空间中来使全局变量稍微好一些。这样,只有需要访问该变量的函数才能访问。
在此示例中,
startProgramA()
可以访问a
。 startProgramB()
没有。
namespace start_program_a
{
int a = 20;
void startProgramA()
{
cout << a << endl;
}
}
void startProgramB()
{
// This won't work!
// cout << a << endl;
}