//定义并调用含静态变量计算n!
#include<stdio.h>
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
static double f=1;
f=f*n;
return (f);
}
全局变量可做用于全部函数,静态变量只能用于所定义的函数,而不能用于其余函数
若把静态变量定义为普通局部变量,看看能不能实现计算n! 的功能:
#include<stdio.h>
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
double f=1;
f=f*n;
return (f);
}
静态局部变量不会像普通局部变量那样由于函数调用结束被系统回收,它的生存周期会持续到程序结束。若是含有静态局部变量的函数再次被调用,则静态局部变量会被从新激活,上这次函数调用的值仍然保存着,供本次调用继续使用。函数
若是把f换成全局变量呢? 3d
#include<stdio.h>
double f;
double fact_s(int n);
int main(void){
int i,n;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%3d! =%.0f\n",i,fact_s(i));
}
return 0;
}
double fact_s(int n){
double f=1;
f=f*n;
return (f);
}
仍是不行,结果和把f换成局部变量同样blog
使用含有静态局部变量的函数,是特殊的计算循环的方式 io