前情摘要:温故而知新
一、限定作用范围
static修饰的局部变量的生存期虽然整个源程序,但是其作用域被限制在函数内。
二、变量只初始化一次
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。因此,static修饰的变量只初始化一次,未经初始化的静态局部变量编译器会自动初始化为0。
#include <stdio.h>
//变量只在第一次调用此函数时,初始化为10,
//以后再次调用此函数,就不会被进行初始化了,只执行temp--。
int test(){
static int temp = 5;
return temp--;
}
int temp = 1;
int main(void)
{
for(; temp <= 10; ++temp)
printf("%d\t\t%d\n", temp, test());
return 0;
}
程序运行结果:
1 5
2 4
3 3
4 2
5 1