本文主要是介绍形参、普通(非静态)局部变量和静态局部变量差别---求取指定整数间阶乘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
形参、普通(非静态)局部变量和静态局部变量差别---求取指定整数间阶乘
1.形参、局部变量和静态局部变量的差别。
从本质上说,三者均属于局部作用域中的变量,其中,局部变量又可以分为普通(非静态)局部变量和静态局部变量。它们的差别在于:
1) 形参的作用域为整个函数体,而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。
2)形参由调用函数时传递的实参初始化;而普通(非静态)局部变量和静态局部变量通常用初始化式进行初始化,且均在程序执行流程第一次经过该对象的定义语句时进行初始化。静态局部变量的初始化在整个程序执行过程中进行一次。
3)形参和普通(非静态)局部变量均属自动变量,在每次调用函数时创建,并在函数结束时撤销;而静态局部变量的生命期跨越了函数的多次调用,它在创建后直到程序结束时才撤销。
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;
}
这篇关于形参、普通(非静态)局部变量和静态局部变量差别---求取指定整数间阶乘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!