
- void fn_static(void) {
- static int n = 10; //静态局部变量, 放在静态存储区,全局性质空间
- printf("\nstatic n=%d\n", n); // 10
- n++; // n = 11
- printf("\nn++=%d\n", n); // 11
- }
- int main(void) {
- /* fn();
- printf("--------------------\n");*/
- fn_static();
- printf("--------------------\n");
- /* fn();
- printf("--------------------\n");*/
-
- fn_static();//只初始化一次,所以n++会输出12
- }
第二次调用fn_static()函数,不会再将n初始化为10,因为只能初始化一次,所以最后的结果是12
- void fn(void) {
- int n = 10; //普通变量, 每次执行都会初始化,n 在栈区
- printf("n=%d\n", n);
- n++;
- printf("n++=%d\n", n);
- }
- void fn_static(void) {
- static int n = 10; //静态局部变量, 放在静态存储区,全局性质空间
- printf("\nstatic n=%d\n", n); // 10
- n++; // n = 11
- printf("\nn = %d\n", n); // 11
- }
- int main(void) {
- fn();
- printf("--------------------\n");
-
- fn_static();
- printf("--------------------\n");
-
- fn();
- printf("--------------------\n");
-
- fn_static();//只初始化一次,所以n++会输出12
- getchar();
- return 0;
- }
n=10
n++=11
--------------------static n=10
n = 11
--------------------
n=10
n++=11
--------------------static n=11
n = 12
- int num = 10;//普通全局变量
- static int num2 = 20;//静态全局变量,只能在本文件中使用,而不能在其他文件使用
- #include
- void fun1(void) {//普通函数(非静态函数)
- printf("hello from fun1.\n");
- }
- static void fun2(void) {//静态函数, 它只能在本文件中使用
- printf("hello from fun2.\n");
- }
- #include
-
- //在一个文件中,使用另一个文件的全局变量,使用extern引用即可
- extern int num;
- //extern int num2;
- int num2 = 60;
-
- extern void fun1(void);
-
- void main() {
- printf("file02文件中num的值为%d\n", num);
- printf("file02文件中num2的值为%d\n", num2);
-
- fun1();
-
- getchar();
- }
值得注意的是extern int num2编译过程中会出错,static修饰的静态变量只能在当前文件中使用