static
static 是c语言生存期与作用域内容中,颇为重要的一个关键字。它主要有两个用法。
static在修饰函数和全局变量时,会改变二者的作用域,使得它们只在本文件使用,在其他文件中不会被定义。
#include <stdio.h>
void main()
{
extern int a;
printf("%d\n",a);
}
#include <stdio.h>
int a=5;
同时编译这两个 .c 文件,编译成功,并输出。
如果在第二个文件中 static int a 则会编译失败。
static修饰定义局部变量时,局部变量的生存期会由随着代码块持续变为随进程持续。
void f()
{
int a = 7;
a++;
printf("a = %d\n", a);
}
main()
{
f();// a = 8
f();// a = 8
}
void f()
{
static int a = 7;
a++;
printf("a = %d\n", a);
}
main()
{
f();// a = 8
f();// a = 9
}
随进程持续就是就是在程序开始就分配空间,知道进程结束,如函数,全局变量,static修饰的局部变量。