C语言用静态局部变量来实现

如题所述

简单跟你说说吧,静态变量是放静态区的,程序结束后os会自动回收内存的,不用你操心。而局部变量不用我说了吧,简单理解成:在大括号中的都是局部变量,放栈区,static是静态变量的标示符。{
static
int
a=0,b=2;
static
int
sum=0,i;
};
这里的a,b,sum,i都是静态局部变量。如果你不写static的话,就是动态局部变量(默认就是动态的),或者你写auto也是动态局部变量。执行到大括号末尾的时候,这几个变量会从内存中消失的。
如果你不是写在大括号中,而是写在外面的,就是全局变量,加上static就是私有的全局变量。
其实你这个问题问得挺幼稚的。。。。
满意请采纳,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-16
#include
int fuc(int x)
{
static int s=0;
s+=x;
return s;
}
int main()
{
int s,i;
for(i=1;i<=100;i++)
{
fuc(i);
}
s=fuc(0);
printf("%d\n",s);
return 0;
} 首先可以运行看一下结果,发现结果是5050
,即1到100的值
在函数fuc里面有个静态局部变量s
每次调用fuc
即s+=x
,s加上那个值,但是由于是静态的所以前面的值保存了下来实现了累加
最后我在main中调用fuc(0),取出在函数中的静态局部变量的值,输出,具体的N添加个输入即可
回答不易望采纳
第2个回答  2019-04-18
#include
int
f(int
a){
static
int
s
=
0;//静态变量S
s=s+a;
return
s;
}
int
main(){
int
n;
scanf("%d",&n);
int
k
=0;
for(int
i=0;i<=n;i++){
k=f(i);
}
printf("%d",k);
return
0;
}
大概的意思就是
静态变量不随函数调用结束释放,值一直保留到程序结束