c变量存储类型static


static变量存储类型简介

static变量可以被定义在函数之外 函数之内,复合语句中。
static即可以定义为局部变量也可以被定义为全局变量。
使用static定义的局部变量,在函数运行结束后,局部变量不会被释放,当下次函数调用时,变量的初始值为上一次函数退出时的值。
例:
static int a1; //全局变量
void main(){
static int a2; //局部变量
}


static变量存储类型作用域及生命期

例:
[root@localhost ~]#more test.c
#include “stdio.h”

int a1=2;
int function1();

int function1(){
auto int b1=10;
static int b2=20;
b1++;
b2++;
return (a1+b1+b2);
}

int main(){
int i=0;
for(;i < 3;i++) printf("function1():%d\n",function1()); return 1; }


[root@localhost ~]#gcc test.c -o t //编译程序
运行结果:
[root@localhost ~]#./t
function1():34
function1():35
function1():36
//从以上程序我们可以分析出 static存储类型的变量b2,除了第一次初始化为20,后面的都没有被初始化,而是使用函数退出时的值进行相关计算。