C语言中的static关键字
(1) 修饰局部变量,限定变量的生命周期。变量的存储类别由栈区变为静态数据区。
int main()
{
int x=9; //普通局部变量,存储在栈区
static int x=9; //静态局部变量,存储在静态数据区
return 0;
}
(2) 修饰全局变量,限定变量的作用域,该全局变量只能在本源文件中调用,而不能在该工程下的其他文件调用。初始化后的静态全局变量仍然存储在静态数据区,未初始化的静态全局变量保存在bss段。
int m=6; //存储在静态数据区
static int n; //存储在bss段
int main()
{
int x=9; //普通局部变量,存储在栈区
static int x=9; //静态局部变量,存储在静态数据区
return 0;
}
(3) 修饰函数,限定函数的作用域,为了防止同一个工程下不同C文件中的函数重名问题(C++中重载的引入成功的解决函数重名问题)。同时限定该函数的连接属性为内部链接。
static int add(int x, int y)
{
return x+y;
}
static double add(double x, double y)
{
return x+y;
}