【问题标题】:Pass values to function further down the call stack将值传递到调用堆栈的下方
【发布时间】:2017-02-24 21:26:53
【问题描述】:

正如我的主题所说,我想知道一种将值发送到另一个函数调用的函数的方法。例如:

int main(){
 int sendingvalue=funtionreturningvalue();
 int x=0;
 function1(x);
}

function1(int x){
 //some code here 
 function2(x);
}

function2(int y){
 //again some code here
  function3();
}
function3(){
 //here I need the top value sendingvalue
}

在所有函数中一次又一次地显式传递int sendingvalue 直到它到达function3 是没有用的。那么传递这个值的最佳选择是什么?

【问题讨论】:

  • 你要么必须像你说的那样,将它传递给每个函数,要么让它成为任何函数都可以访问的全局变量。
  • 写入文件,然后让内部函数读回来。
  • @2501 这实际上是一个全局变量。
  • @namila007 实际上,全局变量具有无限的复杂性。
  • @namila007 生产力和安全性。

标签: c function parameter-passing


【解决方案1】:

有 2 个选项。您要么将其设为全局变量,要么将其传递给每个函数。

要使其成为全局变量,请在所有函数定义之外添加以下行:

int sendingvalue;

然后您可以访问 modify 并从任何函数中读取它。如果您不想使用全局变量,则必须将其沿堆栈传递。

【讨论】:

  • 感谢您的回复,是的,创建一个全局变量是迄今为止最好的事情
  • @namila007:很少有全局变量“最好的东西”的用例。
  • @alk 全局变量到底有什么不好?
  • @bace1000 SoftwareEngineering.se 上的某个人想知道同样的事情a few years ago。他们得到了很多回应。
猜你喜欢
  • 1970-01-01
  • 2012-10-15
  • 2012-04-01
  • 2020-10-31
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-12-30
  • 2015-02-21
相关资源
最近更新 更多