要求定义并调用含静态变量的函数fact_s(n)计算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; //定义静态变量,第一次赋值为1
f=f*n; //上一次调用时的值再乘n
return f;
}
测试用例:
Input n:6
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
静态局部变量:生存周期会持续到程序结束。由于存储单元被保留,一旦含有静态局部变量的函数被再次调用,则静态局部变量会被重新激活,上一次函数调用后的值仍然保存着,可供本次调用并继续使用。
静态变量定义格式:
static 类型名 变量表
静态变量赋初值只在函数第一次调用时起作用,若没有赋初值,则系统将自动赋0