首页 > 解决方案 > 如何初始化变量,但是当启动所述函数时,变量的值不会重置?

问题描述

我做了这个例子来说明我在说什么。我想知道是否有一种方法可以在不将值重置为 0 的情况下运行 main()。

int main(){

   int value = 0;
   value++;
   cout << value << endl;
   main();
}

标签: c++

解决方案


在回答问题之前,您的示例有两个大问题

  • main不允许打电话,甚至不接受地址。
  • 您的函数具有无限递归,这使您的程序具有未定义的行为。

在调用之间保存的另一个示例value可能如下所示。它使用一个static变量,0在第一次调用函数时初始化,并且在程序执行期间永远不会再次初始化。

#include <iostream>

int a_function() {
    static int value = 0;
    ++value;
    if(value < 100) a_function();
    return value;
}

int main(){
    std::cout << a_function();   // prints 100
}

推荐阅读