static的本质:
static 是定义静态变量用的,在程序执行中他只会被初始化一次。
静态变量的实质是:静态存储方式,其存储空间为内存中的静态数据区
1、先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是a.c的内容
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
下面是main.c的内容
extern char a; // extern variable must be declared before use
int main(void)
{
printf("%c ", a);
msg();
return 0;
}
程序的运行结果是:
A Hello
为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数&#x