【发布时间】: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