【问题标题】:Can static variable be re-initialised [closed]静态变量可以重新初始化[关闭]
【发布时间】:2020-11-16 16:32:38
【问题描述】:

ma​​in() 函数中, i,a 和 b 是贴花的静态。好,可以。 函数被调用。 所有 i,a 和 b 都有一些价值。好的,很公平。

函数被再次调用。 现在作为静态变量 i , a 和 b 必须保留它们的值。 但 如何将 i 再次初始化为 0?(它是否应该包含它之前的值?)

Snap shot of the problem.

P.s 答案是 d 顺便说一句。

【问题讨论】:

  • 请将问题中的代码以文本的形式发布。它应该是minimal reproducible example
  • static 仅仅意味着对象甚至在main() 开始之前就存在(尽管它们对定义它们的函数的范围有限)并且它们的值是它们初始化中的任何内容(或@987654325 @)。与任何其他变量一样,静态对象不能重新初始化,但可以随时为它们分配新值。
  • 多么糟糕的问题。我的意思是链接的,而不是这里问的。即使乍一看,该代码也有六个问题,在代码审查中不会出现。为什么学生会遇到故意混淆的代码问题,而不是展示格式良好、清晰的代码作为示例?
  • @EugeneSh。非常抱歉,我不会重蹈覆辙。我确实释放了这种方式变得很麻烦。谢谢你告诉我。
  • @pmg 我明白你在说什么,这解决了所有的困惑。谢谢你的解释。真的很有帮助。

标签: c function static output


【解决方案1】:

i 没有再次初始化:

void printtab()
{
    static int i, a = -3, b = -6;
    i = 0;
    ...

输入函数时分配一个新值。

【讨论】:

  • 那么我也可以这样为 a 和 b 分配另一个值吗?
  • @Teaquila 是的,事实上代码已经在下面几行完成了。
猜你喜欢
  • 2018-08-13
  • 2011-08-22
  • 2010-12-22
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2017-12-07
  • 2013-09-30
  • 1970-01-01
相关资源
最近更新 更多