c语言中什么是静态局部变量?

如题所述

static 用修饰符来声明的变量叫静态变量。
这种变量和一般的变量不同。从程序开始到程序结束一直存在。
局部静态变量。是在函数内部声明的静态变量。
局部静态变量的值有一个特性,它会保存你操作的结果。
举个例子:
int test(int a)
{
static int sum = 5;
sum += a;
return sum;
}
当你第一次调用时 static int sum = 5;起作用
int a1 = test(2);// a1 = 7 同时 sum = 7
当你第二次调用时 static int sum = 5;不起作用 sum = 7
int a2 = test(2);// a2 = 9 sum = 9

这是因为用static声明的变量分配的地址不是在栈中。在完成第一次调用后,它仍然存在,并且有个值。第二次调用时,并不会再重新生成一个变量,还会使用上一次函数完成时的值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-28
静态局部变量相当于全局变量,只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的,函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值。
第2个回答  2014-03-07
静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。
第3个回答  2014-03-07
在函数内部static声明的变量,在第一次调用函数的时候进行初始化,此后对此函数的调用,都使用第一次初始化话时的变量,对函数内部来说就像是使用全局变量一样,但静态局部变量只对声明的函数可见。一般编写底层应用的时候用的比较多
第4个回答  2014-03-08
静态与实例相对应,静态从字面上理解就是“静态的-_-”,只初始化一次,并常驻内存。本回答被提问者采纳