c和c++语言中static的两个功能(其他语言是不一样的,这里只指c和c++)
1、限制作用域static和extern相对应,static定义的函数无法从外部访问
2、管理生命周期由于static是静态的,所以写在一个函数里的话,如果多次调用这个函数,实际上只初始化了第一次,因此第二次第三次等之后的调用可以保留之前的值。
以下代码是一个命名为test1.c的文件。
#include#include "test1.h" //static 定义的函数外部无法访问 static int count(void){ static int time = 0;//管理生命周期,多次使用这个函数只有一个time time++; return time; } static void print_hello(void){ printf("time=%dn",count()); } void test1(void){ print_hello(); }
上面的代码(即test1.c)文件如果在别的c文件中调用,只能调用test1函数,不能调用其他两个函数;且第一次调用输出time=0,第二次调用输出time=1,第三次调用输出time=2,以此类推



