【发布时间】:2013-12-17 15:20:45
【问题描述】:
我已经定义了一个这样的函数
static void
flatten_tree(...)
{
static int num = 0;
...
}
但是,当函数执行时,num 会得到一些随机值,而不是第一次运行时的 0。在随后的函数调用中,它的行为与静态 var 应该做的一样。静态变量不是用零显式初始化的吗?初始化它的正确方法是什么?
【问题讨论】:
-
你怎么知道它没有初始化为0?你能告诉我们吗?
-
显示更多代码。堆栈上的指针可能会覆盖这些值。
-
编译器应该将所有静态初始化为0。它总是一个不同的随机值吗?
-
我猜当控件在 on 该行时,当它尚未初始化时,您正在 GDB 中查看它。但实际初始化只有在你输入 next ;-) 之后才会发生
-
根据文档,所有静态变量的初始默认值为零。如果您认为您是对的,请向我们展示代码。