#include <stdio.h>
void foo()
{
int a = 10;
static int sa = 10;
a += 5;
sa += 5;
printf("a = %d, sa = %d\n", a, sa);
}
int main()
{
int i;
for (i = 0; i < 10; ++i) {
foo();
}
}
我理解“函数内部的静态变量在调用之间保持其值”。如果我想稍后重置“sa = 10”的值,我该如何实现呢?
答案 0 :(得分:1)
目前,每次调用foo()
时,两个变量都会增加5
。但是sa
将保留函数调用之间的值:
i | a | sa
0 | 15 | 15
1 | 15 | 20
...
重置sa
的值只需为此变量赋值:
void foo()
{
int a = 10;
static int sa = 10;
a += 5;
sa += 5;
// reset sa
if (sa > 100) {
sa = 10;
}
printf("a = %d, sa = %d\n", a, sa);
}