请大家帮我理解一下静态局部变量呀。

来源:百度知道 编辑:UC知道 时间:2024/05/14 09:55:37
f(int n)
{
auto x=0;
static y=3;
x=x+1;
y=y+1;
return(n+x+y);
}
main()
{
int n=2,i;
for(i=0;i<3;i++)
printf("%4d",f(n));
getch();
}
在上术程序中,y变量每一次调用的时候都对它重新初始化,也就是说它虽然被定义库静态局部变量,但每一次调用的时候由天有语句y=3初始化,它的每一次数值都应该是3呀,可是这个程序程序的时候每一次都加了1,好像Y=3第一次调用以后就没有起作用了,请大家给我请一下呀,谢谢!!!

静态局部变量,只初始化一次,之后不管你调用多少次,都不执行初始化指令了。所以是一直加上去的。通常用在游戏中记录分数用。

static y=3;这个语句表示定义了一个静态局部变量,而静态局部变量是指:在内存单元中申请了一个地址给y,他不会因为函数的调用与否而改变,也就是说,函数调用前和调用后,y的那段内存始终存在,但是当你调用一次y后,你对y做的修改,也将修改y的值。
你上面的函数,static y=3;给y申请了一段地址并给其赋值为3,y=y+1; 这一语句将使y的值加1,因此变为4,所以在内存中y的值在下次改变之前就一直是4,直到下次调用再改变其值。