结果输出全部为10,因为每次a都被重新定义
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fun01()
{
int a = 10;
printf("%d\n", a++);
}
int main()
{
for (int i = 0; i < 10; i++)
{
fun01();
}
system("pause");
return EXIT_SUCCESS;
}
输出结果每次加1,因为static
修饰后不能被从新定义
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void fun01()
{
static int a = 10;
printf("%d\n", a++);
}
int main()
{
for (int i = 0; i < 10; i++)
{
fun01();
}
system("pause");
return EXIT_SUCCESS;
}
静态(static)全局变量
1.在函数外定义,作用范围被限制在所定义的文件中
2.不同文件静态全局变量可以重名,但作用域不冲突
3.static全局变量的生命周期和程序运行周期一样,同时staitc全局变量的值只初始化一次
静态(static)局部变量
1.static局部变量的作用域也是在定义的函数内有效
2.static局部变量的生命周期和程序运行周期一样,同时staitc局部变量的值只初始化一次,但可以赋值多次
3.static局部变量若未赋以初值,则由系统自动赋值:数值型变量自动赋初值0,字符型变量赋空字符