如何跨多个函数使用变量?

Posted

技术标签:

【中文标题】如何跨多个函数使用变量?【英文标题】:How do I use variables across multiple functions? 【发布时间】:2013-05-12 03:51:49 【问题描述】:

假设我有一个简单的控制台程序如下:

(由于我是新手,还没有测试它可能包含错误)

#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' 的值或打印它或做任何事情而不将其传递给每个函数?

很抱歉,如果已经有这样的问题,我不怀疑,但我找不到任何问题!

提前致谢!

【问题讨论】:

使其全球化。但是你为什么不想通过呢?在大多数情况下,这是更好的方法。 因为那时我必须传递和返回大量变量,因为我将尝试在比上面的示例更大的范围内使用它.. 欢迎编程。如果变量太多,请将相关变量放入结构或类似结构中。你的规模越大,你就越有可能因为踩到你的全局变量并产生副作用而搞砸。 【参考方案1】:

实际上只有两种方法:全局变量或参数传递。

如果您将变量声明为全局变量,即在全局范围内(以及之前)任何函数,那么所有函数都可以使用它。但是,应尽可能少使用全局变量。相反,我真的建议您将其作为参数传递,如果其他函数稍后需要使用该变量,则继续将其作为参数传递。

当然,既然您使用的是 C++,为什么不定义一个类并使变量成为该类的成员呢?然后你可以把所有相关的函数放在这个类中,并且所有的函数都可以使用这个变量,而不用把它变成全局变量或者作为参数传递。

【讨论】:

以上是关于如何跨多个函数使用变量?的主要内容,如果未能解决你的问题,请参考以下文章

跨 dll 使用静态类变量/函数

BigQuery SQL 中跨多个字段的拆分函数

6跨函数使用内存

如何在 VHDL 中使用“函数”从同一计算中返回多个变量?

如何在代码点火器模型中跨多个函数实现数据库锁定?

Javascript中跨多个文件的全局变量