static (静态的)
作用:修饰局部变量,修饰全局变量,修饰函数
对比两段代码
#include <stdio.h>
void test()
{int a = 5;a++;printf("%d ", a);
}
int main()
{int i = 0;for(i=0; i<5; i++){test();}return 0;
}
打印:6 6 6 6 6
转到反汇编
显然int a = 5;有汇编指令 ,符合循环一次,创建一次销毁一次(栈区)
#include <stdio.h>
void test()
{static int a = 5;a++;printf("%d ", a);
}
int main()
{int i = 0;for(i=0; i<5; i++){test();}return 0;
}
打印:6 7 8 9 10
转到反汇编
显然static int a = 5;没有汇编指令
此时变量a只创建了一次(静态区)
static修饰局部变量延长了变量的生命周期(本质是改变了变量的存储类型:栈区的局部变量-->静态区的静态变量,生命周期同程序的生命周期,注意:作用域不变)