例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) 如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用时重新赋值。 但是应该看到,用静态存储要多占内存,而且降低了程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么。因此,如不必要,不要多用静态局部变量。

评论