- 只有比别人更早、更勤奋地努力,才能尝到成功的滋味
1、当static用于函数内部时,例如static int i;当函数执行完后,i不会被释放,下一次调用函数时,i的值会保留上次的值继续使用。
程序如下:
#include <stdio.h>
#include <stdlib.h>
void func()
{
static int i=0;
int j=0;
i++;
j++;
printf("i: %d, j: %d \n",i,j);
}
int main()
{
func();
func();
return 0;
}
结果:
static定义的静态变量在每一次的函数调用中,只有第一次进行了初始化,因为从程序的输出结果为3,4,6可以看出,
第一次fun(0)时,执行了static int value =3;然后 value+=i;得value=3;当运行fun(1)的时候,程序跳过static int value =3;
执行 value+=i;得value=3+1;所以value=4;
#include <stdio.h>
#include <stdlib.h>
void fun(int i)
{
static int value =3;
value+=i;
printf("%d\n",value);
}
int main()
{
fun(0);
fun(1);
fun(2);
return 0;
}
2、当statc用于子函数外部时
static int i;
int j;
在这里,i与j都是全局变量,二者的区别是,j可以被别的文件使用,i只能在本文件中使用,这是static对全局变量的作用。