您的位置:知蚁博客 » C/C++程序设计 » C/C++中静态局部变量的特点与应用

C/C++中静态局部变量的特点与应用

作者: 发布时间:2011-05-29 分类:C/C++程序设计 标签: 5,345人浏览

  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

相关文章

24访客评论 ,博主回复14

  1. 纯技术性文章要好好的保存一下,有空的时候系统的学习一下

    一苇05-29 23:26 回复
  2. 就这个而言。相当适合我们。刚考试不久

  3. 嗯,学习了。

    松鼠网05-30 10:53 回复
  4. 太专业了,理解不来呢

    姜敏05-30 11:50 回复
  5. 呵呵,专业!

  6. 老天…我以前也学过,感觉费神 现在不学了

    混小子05-30 13:33 回复
  7. 完全不懂,岚女纯粹来支持,吼吼。。。

    雅岚05-30 15:24 回复
    • 有美女前来助阵,定能使小博人气更旺啊,常来哦~

      知蚁05-31 22:29 回复
  8. 谁来教我代码?

    宠物05-30 17:53 回复
    • 我这不就在教的嘛

      知蚁05-31 22:28 回复
  9. 好样的不错的东西

    空中白鹤05-30 17:54 回复
  10. 学习了

    幸福来05-30 18:59 回复
  11. 依然不懂。。。

  12. 这个都交还给老师了

    迷失乐园05-31 09:39 回复
    • 好学生,不拿老师一针一线

      知蚁05-31 22:27 回复
  13. 哇 很高深啊

    疾风05-31 12:51 回复
    • 高深不敢当啊,呵呵

      知蚁05-31 22:26 回复
  14. 代码的东西,天书,哈哈

    学夫子05-31 12:59 回复
    • 夫子可以顺便给我们讲讲阶乘的嘛,呵呵

      知蚁05-31 22:26 回复
  15. 学习了,尽管不太懂

    远走高飞05-31 15:40 回复
    • 世上程序本难懂,看的多了也就懂了,嘿嘿

      知蚁05-31 22:23 回复
  16. 拜访博主,继续学习,多谢

    七七05-31 15:56 回复
    • 不客气哈,多谢支持

      知蚁05-31 22:22 回复
  17. 专业性差点。。

    鞋套机05-31 22:57 回复
    • 都是些入门的东西,呵呵

      知蚁05-31 23:06 回复
  18. 入门的,我也不是很懂。但虚心支持!

    • 所谓隔行如隔山啊,专注自己的领域就好,其他的随便看看,了解下就行,呵呵

      知蚁06-01 20:11 回复
  19. 这个我还真不懂呢

    先看看06-01 17:54 回复
    • 这个可以懂,呵呵

      知蚁06-01 20:13 回复
  20. 研究一下,博主节日快乐

    石家庄seo06-01 18:30 回复
    • 同乐,谁来给发点糖吃就好了

      知蚁06-01 20:14 回复
  21. 还很少研究,来学习了

    远走高飞06-01 19:58 回复
    • 多谢支持哈~~

      知蚁06-01 20:15 回复
  22. I am glad that this post useful to you.

    知蚁06-13 22:39 回复
  23. 我也是做程序的,这些都是基本的呀

    临沂医院06-18 11:21 回复
    • 最近在复习这些知识,基本的东西才是最重要的

      知蚁06-18 17:51 回复
  24. 贫道悟了!悟了!

    想知道07-09 08:59 回复

我来说说

(必须)

(必须,保密)

你确定你已经看过文章了?
取消

无觅相关文章插件,快速提升流量