静态变量不保留其功能内的值
问题描述:
内部函数静态变量在再次调用时保留其值,但为什么在这种情况下不会发生?静态变量不保留其功能内的值
#include <stdio.h>
void print(void) {
static int x;
x = 10;
x += 5;
printf("%d ", x);
}
int main() {
print();
print();
return 0;
}
它给出的输出为15 15
。
答
你每次都分配一个新的值:
static int x;
x = 10; // <- assignment
你可能想要的是初始化:
static int x = 10; // <- initialization
初始化只一次可变生命中发生,static
意味着变量生活的整个程序的执行时间。
答
初始化静态变量将解决问题。下面更正例如解决了问题,并给了我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;
}
重置为'X = 10;'每次调用。 – BLUEPIXY
急需C书 –