1.静态变量static的定义
静态变量属于是静态的储存方式,静态的含义是其变量不会随着函数的调用和退出产生变化,Static类型的内部变量是一种只能在某个特定函数中使用,但一 直占据存储空间的变量。在默认情况下为auto变量。
auto变量则会因为函数的调用和退出而存在和消失。
简单来说 静态变量在定义它的那个区域内一直是它变化的最新值,
2.代码证明
/*
由于f为静态变量,能在每次调用后保留其值并在下一次调用时继续使用,所以输出值成为累加的结果。若变量f说明为自动变量(去掉static),当main中多次调用factor时,f均赋初 值为1,故每次输出值均为1。
*/
# include < stdio. h>
long factor( int n)
{
static long int f = 1; //static
f * = n;
return f;
}
main( )
{
int i;
for ( i = 1; i < = 5; i+ + )
printf ( "%ld\n" , factor( i) ) ;
}
输出结果
去掉静态变量输出结果
由于f为静态变量,能在每次调用后保留其值并在下一次调用时继续使用,且不受赋值影响,所以输出值成为累加的结果。若变量f说明为自动变量(去掉static),当main中多次调用factor时,f均赋初值为1则均为1。