Chinaunix首页 | 论坛 | 博客
  • 博客访问: 431474
  • 博文数量: 103
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 22:17
文章分类

全部博文(103)

文章存档

2013年(4)

2012年(99)

我的朋友

分类: C/C++

2012-09-19 13:36:52

静态局部变量特点  
静态属于,它具有以下特点:
  (1)静态局部变量在函数内定义,但不象那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
  (2)静态局部变量的生存期虽然为整个源程序,但是其仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
  (3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。
  (4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
  给读者一个简单直白的例子(区别静态局部变量和动态局部变量):
  int fun(int n)
  {
  static int f=1; /*请注意这行的修改*/ 这是 static 结果:

  f=f*n;
  return(f);
  }
  int main()
  {
  int i;
  for(i=1;i<=5;i++)
  printf("%d!=%d\n",i,fun(i));
  }
  =========================================================
  int fun(int n)
  {
  int f=1; /*请注意这行的修改*/ 结果是:

  f=f*n;
  return(f);
  }
  int main()
  {
  int i;
  for(i=1;i<=5;i++)
  printf("%d!=%d\n",i,fun(i));
  }
阅读(1041) | 评论(0) | 转发(0) |
0

上一篇:sizeof函数

下一篇:两道经典的c面试题

给主人留下些什么吧!~~