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
阅读(1407) | 评论(0) | 转发(0) |