c - 使用错误值初始化的静态变量

标签 c static

我定义了一个这样的函数

static void
flatten_tree(...)
{
  static int num = 0;
  ...
}

但是,当函数执行时,num 会得到一些随机值,而不是第一次运行时的 0。在随后的函数调用中,它的行为与 static var 应该做的一样。静态变量不是显式初始化为零吗?初始化它的正确方法是什么?

最佳答案

如果它在第一次调用时没有设置为零,那么要么你的 C 实现被破坏,你的调试器被破坏,或者你犯了一些其他错误 - 我不会评论哪一种是最有可能的情况:- )

如果您真的想看看它在做什么,请将您的代码暂时更改为:

static void
flatten_tree(...)
{
  static int num = 0;
  printf( "XYZZY DEBUG: initial num is %d\n", num);
  exit(1);

  ...
}

关于c - 使用错误值初始化的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637912/

相关文章:

c - 运行 Redis 的大量 TIME_WAIT 套接字连接

c++ - 堆栈问题

java - 为什么其他方法可以是 "static"而构造函数不能?

java获取静态方法的类名

java - 具有两种同步方法的线程安全性,一种是静态的,一种是非静态的

c++ - 如何将 API 名称放入变量中以便于编码

c++ - C/C++ 主函数中参数列表的大小和不确定行为是多少

c - 用C语言初始化LCD显示屏PIC16F1829?

java - 抽象类java中的静态变量

c++ - 如何重置函数内的静态 vector ?