静态变量不保留其在函数内的值

时间:2017-08-27 14:40:55

标签: c static-variables

内部函数静态变量在再次调用时保留其值,但为什么在这种情况下不会发生?

#include <stdio.h>

void print(void) {
    static int x;
    x = 10;
    x += 5;
    printf("%d ", x);
}

int main() {
    print();
    print();
    return 0;
}

输出为15 15

2 个答案:

答案 0 :(得分:8)

每次都分配一个新值:

static int x;
x = 10;             // <- assignment

你可能想要的是初始化:

static int x = 10;  // <- initialization

初始化在变量生命周期内仅发生一次static表示变量在程序的整个执行时间内存在。

答案 1 :(得分:0)

初始化静态变量将解决问题。以下更正的示例解决了该问题,并为我提供了1520

#include <stdio.h>

void print(void) {
    static int x = 10; //Initialize here
   // x = 10;  //remove this statement
    x += 5;
    printf("%d ", x);
}

int main() {
    print();
    print();
    return 0;
}