1.static修饰局部变量时
可以理解为将局部变量变为全局变量,如图:
#include <stdio.h>
void test(void)
{
int a = 1;
a++;
printf("a的值为%d\n", a);
}
int main(void)
{
int i = 0;
while (i < 5) {
i++;
test();
}
return 0;
}
没有static时结果为
a的值为2
a的值为2
a的值为2
a的值为2
a的值为2
如果有static时,则变为:
#include <stdio.h>
void test(void)
{
static int a = 1;
a++;
printf("a的值为%d\n", a);
}
int main(void)
{
int i = 0;
while (i < 5) {
i++;
test();
}
return 0;
}
结果为:
a的值为2
a的值为3
a的值为4
a的值为5
a的值为6
2.static修饰全局变量和函数时则使其周期变短,不能被另一个文件所检测;
以下两个文件:
a.c
int a = 10;
b.c
#include <stdio.h>
int main(void)
{
extern int a;
printf("a的值为%d\n",a);
return 0;
)
输出结果则为:
a的值为10
若用static修饰的话,则不能成功运行。