用extern声明外部变量:一个文件内的全局变量
#include <stdio.h> int max(int,int); int main( ) { extern int a,b; //对全局变量a,b作提前引用声明 printf("%d\n", max(a,b)); return 0; } int a=15,b=-7; //定义全局变量a,b int max(int x,int y) { int z; z=x>y?x:y; return z; }
静态局部变量是存储在静态区的局部变量
#include <stdio.h> int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return a+b+c; } int main( ) { int a=2,i; for(i=0; i<3; i++) printf("%d ", f(a)); printf("\n"); return 0; }
静态局部变量的应用场合,例:需要保留函数上一次调用结束时的值时
#include <stdio.h> int count_calls() { static int ctr=0; return ++ctr; } int main( ) { int i; for(i=0; i<10; i++) printf("%d\n", count_calls()); return 0; }