- 修饰局部变量(函数内部)
静态局部变量,只在程序第一次调用时初始化1次,生命周期贯穿整个程序,不会函数退出就销毁,作用域依旧仅限函数内部。
c
void test()
{
static int a = 0; // 仅初始化一次
a++;
printf("%d\n",a);
}
普通局部变量:每次进函数重新创建、退出销毁;static局部变量保存上次的值。
- 修饰全局变量
限制作用域,这个全局变量只能在当前.c/.cpp文件内访问,别的源文件无法extern引用。
不加static的全局变量,是整个工程可见。
c
static int g_val = 10; // 仅本文件可见
- 修饰函数
static函数,仅当前源文件内部可用,其他文件不能调用,隐藏函数,避免多文件函数名冲突。
c
static void func()
{
}
C++额外独有
- 修饰类的成员变量
属于类本身,不属于某个对象。所有对象共享同一份static成员变量,需要在类外初始化。
cpp
class A{
public:
static int num;
};
- 修饰类的成员函数
静态成员函数,没有this指针,只能访问static成员,不需要创建对象就可以调用。