C/C++中的变量分为全局变量、静态全局变量、局部变量和静态局部变量。关于各种变量类型之间的联系与区别,这里暂时不讨论,本文只重点说明静态局部变量。
从称呼上我们可以看出,静态局部变量首先是一个局部变量,因此其只在定义它的函数内有效,冠以静态的头衔后,其生存期就被延长了,不会随着函数的返回而被撤销。我们可以这样来理解:静态局部变量就是在程序生存期间一直有效,但只能在定义它的函数中使用的一种变量。
静态局部变量的声明比较简单,在声明局部变量的时候,加上关键字static就可以了。下面是一个用局部静态变量计算阶乘的具体例子。
#include “stdio.h”
int fac(int n)
{
static int nRet = 1; //静态局部变量
nRet *= n;
return nRet;
}
void main()
{
for(int i=1;i<5;i++)
{
printf(“%d!=%d\n“,i,fac(i));
}
getchar();
}
在第一次调用函数fac的时候,函数fac中的静态局部变量nRet被初始化为1,如果没有默认指定初始化值得话,会被默认初始化为0. 主函数main中共进行了4次fac函数的调用:
第一次调用:初始化nRet为1 函数返回时:nRet=1
第二次调用时: nRet=1 函数返回时:nRet=2
第三次调用时: nRet=2 函数返回时:nRet=6
第四次调用时: nRet=6 函数返回时:nRet=24
可以看出,静态局部变量在第一次调用的时候进行初始化,每次函数调用后,静态局部变量不会像局部变量那样被立即释放,而是继续有效,在下一次函数调用的时候会继续使用上一次的值。
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/86
纯技术性文章要好好的保存一下,有空的时候系统的学习一下
就这个而言。相当适合我们。刚考试不久
嗯,学习了。
太专业了,理解不来呢
呵呵,专业!
老天…我以前也学过,感觉费神 现在不学了
完全不懂,岚女纯粹来支持,吼吼。。。
有美女前来助阵,定能使小博人气更旺啊,常来哦~
谁来教我代码?
我这不就在教的嘛
好样的不错的东西
是的,很不错的
学习了
依然不懂。。。
这个都交还给老师了
好学生,不拿老师一针一线
哇 很高深啊
高深不敢当啊,呵呵
代码的东西,天书,哈哈
夫子可以顺便给我们讲讲阶乘的嘛,呵呵
学习了,尽管不太懂
世上程序本难懂,看的多了也就懂了,嘿嘿
拜访博主,继续学习,多谢
不客气哈,多谢支持
专业性差点。。
都是些入门的东西,呵呵
入门的,我也不是很懂。但虚心支持!
所谓隔行如隔山啊,专注自己的领域就好,其他的随便看看,了解下就行,呵呵
这个我还真不懂呢
这个可以懂,呵呵
研究一下,博主节日快乐
同乐,谁来给发点糖吃就好了
还很少研究,来学习了
多谢支持哈~~
I am glad that this post useful to you.
我也是做程序的,这些都是基本的呀
最近在复习这些知识,基本的东西才是最重要的
贫道悟了!悟了!