static 的作用如下:
1.static定义的静态全局变量
static定义的静态全局变量只可以在本文件中被使用,比如你在1.c源
文件中定义了一个静态的全局变量,你这时候又新建了一个叫2.c的
源文件,那你想在2.c中用extern 声明这个在1.c中定义的静态全局变
量并且使用它,没用,用不了。
2.static定义的静态局部变量
static定义的静态局部变量,因为是局部变量,那肯定是在某个函数
内定义的,所以只可以在这个函数内使用你定义的这个静态局部变量,但是static定义的静态变量,不管是局部的还是全局的,都是存储在静态区,不是在栈区开辟的空间,所以程序没结束就不会死掉
3.static定义的函数
static定义的函数,举个例子不然不好理解:
我在1.c中写了下面的代码,只需要写这些,不需要再写文件包含:
static test1()
{
printf("helloworld!");
}
在2.c中调用这个函数:
#include<stdio.h>
int main()
{
test1();**//编译通过不了,因为static定义的函数只可以在1.c中使用**
return 0;
}
如果我改一下1.c变成:
static test1()
{
printf("helloworld!");
}
test2()
{
test1();
}
之后我在2.c中调用test2():
#include<stdio.h>
int main()
{
test2();//打印helloworld!
system("pause");
return 0;
}
4.凡是static定义的变量,在使用过程中都只会初始化一次,
下一次使用之前其值保持不变,因为是在静态区存储的,即使离开
函数也不会死掉,未初始化的静态变量都初始化为0.