【问题标题】:return value for a static variable静态变量的返回值
【发布时间】:2016-10-21 02:26:55
【问题描述】:

我正在尝试使用静态变量作为函数被调用次数的计数器。本质上,我让函数 A 多次调用函数 B,我希望函数 B 将该值返回给函数 A,以便显示它。下面是我的测试代码示例(这里 main 是函数 A,showStat 是函数 B)。截至目前,输出为 012340;所需的输出是 012344。提前致谢。

int showStat()
{

    static int statNum;
    cout<<statNum; //function check
    statNum++;
    return statNum;
}


int main()
{
    int statNum;

    for( int i = 0; i < 5 ; i++)
    {
    showStat(); 
    }
    cout<<statNum;

    return 0;
}

【问题讨论】:

  • 这两个符号 statNum 是不相关的(并且您的代码无论如何都会表现出未定义的行为)。要更改为所需的输出,请将调用 showStat(); 更改为 statNum = showStat() - 1;
  • 或者把statNum改成类中的全局静态变量,去掉其他所有初始化

标签: c++ variables static


【解决方案1】:

主要是改变

showStat();

statNum = showStat();

您有两个名为 statNum 的变量。显然,计数发生在 showStat() 函数内的静态变量中。但是在 main() 中没有读取 showStat() 的返回值,您只是打印未初始化的局部变量,编译器恰好为其分配了初始值 0。

【讨论】:

  • 这将产生以下输出:012345.
  • @IInspectable 他的问题描述自相矛盾。是的,代码将打印 5(与他提到的 4 不同);但同时他说“计算一个函数被调用的次数”。他的循环调用了五次。
  • 感谢您的帮助!我意识到我应该在 cout
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 2012-03-21
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多