voidtest()//进函数a生命周期开始 { int a = 1;//a局部变量,再进来a还是1,循环往复 a++;//2 printf("%d", a);//2222222222 }//出函数a就销毁了还给操作系统 intmain() { int i = 0; while (i < 10) { test(); i++; }
return0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<stdio.h> intsum(int a) { int c = 0; staticint b = 3; c += 1; b += 2; return (a + b + c); } intmain() { int i; int a = 2; for (i = 0; i < 5; i++) { printf("%d,", sum(a)); } }
voidtest() { staticint a = 1;//上一次出的时候a没有销毁,可以根据结果推测,每一次调用test函数使用的a是上一次留下的, a++;//2 printf("%d", a);//234567891011 } intmain() { int i = 0; while (i < 10) { test(); i++; }
return0; }
在另一个文件定义的变量不能直接使用,要声明 extern int g;//使用之前声明,extern是一个关键字,专门用来声名外部符号的
static修饰全局变量, 一个全局变量在整个过程的其他文件内部使用,是因为全局变量具有外部链接属性,当一个全局变量被static修饰的时候,整个变量 当一个全局变量被static修饰的时候,整个变量就变成了内部链接属性,使得全局变量只能在自己所在的源文件内部使用,其他文件不能用, static int g = 10;