例4.13 输出1~5的阶乘值(即1!,2!,3!,4!,5!)。
#include <iostream>
using namespace std;
int fac(int); //函数声明
int main( )
{int i;
for(i=1;i<=5;i++)
cout<<i<<″!=″<<fac(i)<<endl;
return 0;
}
int fac(int n)
{static int f=1; //f为静态局部变量,函数结束时f的值不释放
f=f*n; //在f原值基础上乘以n
return f;
}
运行结果为
1!=1
2!=2
3!=6
4!=24
5!=120
每次调用fac(i),就输出一个i,同时保留这个i!的值,以便下次再乘(i+1)。
(2) 如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用时重新赋值。
但是应该看到,用静态存储要多占内存,而且降低了程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么。因此,如不必要,不要多用静态局部变量。
评论