在C中创建一个静态变量

时间:2016-06-02 14:35:46

标签: c

static中的C可以保留stack变量,即使在创建函数存在之后也是如此。

但是,在这种情况下,

void static_func() {
    static int var = 1;
    var += 1;
}

我可以访问var之外的static_func()并返回其值。我们假设在static_func()中调用了main()三次,那么var的值为3.

但是,每次执行该函数时都会将其设置为1。为什么我仍然得到值3?!

2 个答案:

答案 0 :(得分:6)

说出static int var = 1;后,会创建初始化此变量。这可能只发生一次,否则你会用无用的重复内容充斥你的内存,因为这个变量将在整个程序运行时保持活跃。

答案 1 :(得分:4)

static变量的初始值仅在程序启动时应用一次。每次输入函数时都不会发生这种情况。