#include <stdio.h>
static int j;
void fun1(void)
{
static int i = 0;
i ++;
printf("i equals: %d\t", i);
}
void fun2(void)
{
int j = 0;
j++;
printf("j equals: %d\n", j);
}
int main()
{
for(int k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
运行结果为:
i equals: 1 j equals: 1
i equals: 2 j equals: 1
i equals: 3 j equals: 1
i equals: 4 j equals: 1
i equals: 5 j equals: 1
i equals: 6 j equals: 1
i equals: 7 j equals: 1
i equals: 8 j equals: 1
i equals: 9 j equals: 1
i equals: 10 j equals: 1
由于被
static
修饰的变量总是存在内存的静态区,所以即使这个函数运行结
束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值