静态局部变量特点
静态属于,它具有以下特点:
(1)静态局部变量在函数内定义,但不象那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
给读者一个简单直白的例子(区别静态局部变量和动态局部变量):
int fun(int n)
{
static int f=1; /*请注意这行的修改*/ 这是 static 结果:
f=f*n;
return(f);
}
int main()
{
int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fun(i));
}
=========================================================
int fun(int n)
{
int f=1; /*请注意这行的修改*/ 结果是:
f=f*n;
return(f);
}
int main()
{
int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fun(i));
}
阅读(1041) | 评论(0) | 转发(0) |