static
中的C
可以保留stack
变量,即使在创建函数存在之后也是如此。
但是,在这种情况下,
void static_func() {
static int var = 1;
var += 1;
}
我可以访问var
之外的static_func()
并返回其值。我们假设在static_func()
中调用了main()
三次,那么var
的值为3.
但是,每次执行该函数时都会将其设置为1
。为什么我仍然得到值3?!
答案 0 :(得分:6)
说出static int var = 1;
后,会创建并初始化此变量。这可能只发生一次,否则你会用无用的重复内容充斥你的内存,因为这个变量将在整个程序运行时保持活跃。
答案 1 :(得分:4)
static
变量的初始值仅在程序启动时应用一次。每次输入函数时都不会发生这种情况。