代码一
#include<stdio.h>
int*fun()
{
static int a[2]={0,1};
a[0]+=a[1];
a[1]+=a[0];
return a;
}
main()
{
int i,*b;
for(i=1;i<5;i++)
{
b=fun();
printf("%d %d ",b[0],b[1]);
}
printf("\n");
}
代码二
#include<stdio.h>
int a=1;
int func(int d)
{
int b=1;
static int c=1;
a++;b++;++c;++d;
return a+b+c+d;
}
main()
{
int k,a=4;
for(k=0;k<3;k++)
printf("%d,",func(a));
}
代码一😎:
因为数组a在函数内被static 修饰所以在出代码块时不会被销毁(所以也不会重新被开辟)所以还后续进入fun函数时a数组里的内容并没有被销毁和重置依旧是上次运行时的数值.
代码二🤔:
静态变量只会加载一次并开辟一块内存空间,就是无论你调用了多少遍方法它都只会在第一次调用时加载。而局部变量在每次调用都会进行重新加载并开辟一块内存空间
兄弟,明天再发,这周采纳榜今天截止了🤣🤣
(开个玩笑别当真)
只说代码二:因为static会延长变量的生命周期,在函数使用完以后不会销毁,所以把每次的值都叠加起来,之后就会得到正确结果😏