Chinaunix首页 | 论坛 | 博客
  • 博客访问: 787743
  • 博文数量: 104
  • 博客积分: 915
  • 博客等级: 下士
  • 技术积分: 2171
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-24 21:34
文章分类

全部博文(104)

文章存档

2018年(4)

2015年(14)

2014年(9)

2013年(56)

2012年(21)

分类: C/C++

2013-04-16 15:56:47


static静态变量有如下特点:

        1)静态局部变量属于静态存储类别,是在静态存储区分配存储单元。
        2)静态局部变量与全局变量一样,均只是在编译时赋初值一次。以后每次调用时不会重新赋初值,而是使用上次函数调用结束时保留下来得值。
        3)静态局部变量定义时,如果没有赋初值,系统编译时会自动给其赋初值,重新进行初始化。对数值型变量,赋0,对字符型变量,赋空字符。
        4)虽然静态局部变量在函数调用结束时仍然存在,但它们仅能为定义它们的函数所使用,其他函数不能使用。
    
实例:
int n = 1;            // 全局变量
void func()
{
        static int a = 2;    // 静态局部变量

        a += 2;
        ++n;
        printf("func: n = %d    a = %d\n",n,a);
}
void main()
{
        static int a;        // 静态局部变量

        printf("main: n = %d    a = %d\n",n,a);
        func();
        a += 10;
        printf("main: n = %d    a = %d\n",n,a);
        func();
        printf("main: n = %d    a = %d\n",n,a);
}
运行结果是:
    n = 1    a = 0
    n = 2    a = 4
    n = 2    a =10
    n = 3    a = 6
    n = 3    a = 10


阅读(1356) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~