形参、普通(非静态)局部变量和静态局部变量差别---求取指定整数间阶乘

1.形参、局部变量和静态局部变量的差别。


从本质上说,三者均属于局部作用域中的变量,其中,局部变量又可以分为普通(非静态)局部变量和静态局部变量。它们的差别在于:
1) 形参的作用域为整个函数体,而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。
2)形参由调用函数时传递的实参初始化;而普通(非静态)局部变量和静态局部变量通常用初始化式进行初始化,且均在程序执行流程第一次经过该对象的定义语句时进行初始化。静态局部变量的初始化在整个程序执行过程中进行一次。
3)形参和普通(非静态)局部变量均属自动变量,在每次调用函数时创建,并在函数结束时撤销;而静态局部变量的生命期跨越了函数的多次调用,它在创建后直到程序结束时才撤销。



2.求取指定整数间阶乘


#include <iostream>
using namespace std;
//用于辅助求阶乘函数
int fac(int x)//x为形参
{
static int result = 1;//result为静态局部变量
result *=x;
return result;
}
int main()
{
int uplmt;//uplmt为普通(非静态)局部变量
cout<<"Enter value of upper limit: "<<endl;
cin>>uplmt;

//依次输出1~uplmt之间所有整数的阶乘
for (int i=1;i<=uplmt;++i)
{
cout<<i<<"! = "<<fac(i)<<endl;
}
return 0;
}







形参、普通(非静态)局部变量和静态局部变量差别---求取指定整数间阶乘_C++