static 变量
头文件中的static会在引用该头文件的cpp中分别生成副本
//H.h #ifndef _H_H_ #define _H_H_ static int a = 0; #endif //Ex_2.c #include "H.h" void fun_ex2 () { a++; printf ("%d", a);//这时会打印1 } //Ex_3 #include "H.h" void fun_ex3 () { printf ("%d", a);//这时打印的依然是0,即便先被Ex_2中的fun_ex2()函数修改过,因为他们 //是两个独立的副本 }
函数内的静态变量会在该函数调用时生成,结束时不销毁。
//Ex_1.c void fun_1 () { static int a = 0; a ++; printf ("%d", a); } void fun_2 (int times) { int i = 0; for (;i < times; i++) { fun_1 (); } }
本段参考资料: