在有的时候我们希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,这个时候就应该指定该局部变量为“静态局部变量”,static就起到了决定性的作用。那仫static如何体现它的不消失而继续保留原值的作用呢?它的作用又有哪些呢?。。。
1.static用于修饰变量。对静态局部变量在编译时赋初值,即只赋值一次,在每次调用函数时不再重新赋值而是保留上次函数调用结束时的值,在其他文件中即使使用extern也无法调用;而当定义局部变量时不赋初值时,编译时会自动赋初值“0”或者空字符“\0”;当一个变量被修饰为静态局部变量时,在存储空间内分配存储单元,在整个函数运行期间都不释放,请看下面例子
#include<stdio.h>
#include<stdlib.h>
static int j;
void fun1()
{
static int i=0;
i++;
}
void fun2()
{
j=0;
j++;
}
int main()
{
static int i;
int k=0;
for(k=0;k<10;k++)
{
fun1();
fun2();
}
printf("i=%d\n",i);
printf("j=%d\n",j);
system("pause");
return 0;
}
i和j的值分别是多少呢:
i=0,j=1 你猜对了吗?
2.static用于修饰函数:当static修饰函数时不是指函数的存储方式而是指函数的作用范围:即被static修饰的函数只能作用于本函数内部而不能被其他函数引用,即使在本函数内部调用完成它任然不能被其他函数调用;因为它是局部变量,只能被本函数引用,而不能被其他函数引用。