以下为自己理解,欢迎各位大佬指正讨论
static+变量就组成了静态变量,比如一个函数中定义了普通变量和静态变量,在这个函数运行完毕后,普通变量会被释放,静态变量不会被释放,函数运行完毕后静态变量的值不会发生变化。
比如在某文件中存在静态变量加法函数
int staticjiafa(void)
{
static int i=1;
i++;
return i;
}
和另一个函数普通变量加法函数
int putongjiafa(void)
{
int j=1;
j++;
return j;
}
当调用一次俩函数时,返回值都是2,但是此时静态变量i不释放,普通变量j已经被释放,当第二次调用俩函数时,静态变量i的初始值已经是2了,等运行完静态变量加法函数后,返回的i的值变为了3。普通变量j先前已被释放,所以再次调用普通变量加法函数后,j的值初始化赋值为1后自加变为2。同理,当第三次调用俩函数后,静态变量加法函数返回值为4,普通变量加法函数返回值为2。
上述俩函数没有实际编程验证,有时间精力的朋友可以验证一下,如果我写的有问题可以和我交流。
以上说的是静态局部变量,可以看出静态局部变量和全局变量效果差不多,但是用静态局部变量有利于程序的模块化。此外,static还可用于全局变量和函数上,有机会再说。