【问题标题】:initialize only once non static local variable只初始化一次非静态局部变量
【发布时间】:2021-10-23 13:21:13
【问题描述】:
void foo() {    
    static int x{0};
    int y{0}; // this one
    // dosomething like ++y
    foo();    
}

是否可以只初始化一次变量 'y'(第一次调用 foo 时,而不是在每次调用中),但在每个堆栈帧中单独独立的本地副本。虽然可以在每个堆栈帧中更改它(如 ++y)。

【问题讨论】:

  • 请说明您想要的结果与静态变量的结果有何不同。
  • 将其作为参数传递给foo()
  • 我同意@Evg。您可以将 y 的默认值设置为 0,并且不必为第一次调用传递值。
  • 虽然只有一个x,但在每次调用foo 时都有一个独立的y。您必须全部初始化,或者一个都不初始化。
  • 不知道你想得到什么。能否解释您希望看到的确切行为?

标签: c++ recursion local-variables static-variables


【解决方案1】:

只初始化一次非静态局部变量

只调用一次函数。

如果您希望在多次调用的函数中初始化一个局部变量,那么这就是静态局部变量的用途。

附:您的示例函数具有无限递归。它会溢出堆栈。

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2013-06-04
    • 2017-07-01
    相关资源
    最近更新 更多