静态变量存放在内存中的静态存储区,编译系统为其分配固定的存储空间,重复使用时,会保留变量中的值。
其定义形式为: static 类型标识符 变量名
静态变量分为外部静态变量与内部静态变量。外部静态变量是一种全局变量,但作用域仅在定义其的源文件之中,不像外部变量作用于整个程序。
比如:分析下列程序
/*文件一*/
#include<stdio.h>
static int x=2;
int y=3;
extern void add2();
void add1();
void main(){
add1(); add2(); add1(); add2();
printf("x=%d;y=%d",x,y);
}
void add1(void){
x+=2;
y+=3;
printf("in add1 x=%d\n",x);
}
/*文件二*/
static int x=10;
void add2(void){
extern int y;
x+=10;
y+=2;
printf("in add2 x=%d\n",x);
}
程序运行结果为
in add1 x=4
in add2 x=20 注意add2中的x是文件二中的外部静态变量
in add1 x=6
in add2 x=30
x=6;y=13 注意文件二中y定义为外部变量
内部静态变量与自动变量相似。不同点在于自动变量退出函数调用即消失。