内部函数静态变量在再次调用时保留其值,但为什么在这种情况下不会发生?
#include <stdio.h>
void print(void) {
static int x;
x = 10;
x += 5;
printf("%d ", x);
}
int main() {
print();
print();
return 0;
}
输出为15 15
。
答案 0 :(得分:8)
每次都分配一个新值:
static int x;
x = 10; // <- assignment
你可能想要的是初始化:
static int x = 10; // <- initialization
初始化在变量生命周期内仅发生一次,static
表示变量在程序的整个执行时间内存在。
答案 1 :(得分:0)
初始化静态变量将解决问题。以下更正的示例解决了该问题,并为我提供了15
和20
#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;
}