关键字 static 有两大作用: 隐藏外部对象; 生存期为整个源程序
用 static 声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。通过 static 限定外部对象,可以达到隐藏外部对象的目的。
外部的 static 声明通常多用于变量,当然,它也可用于声明函数。通常情况下,函数名字是全局可访问的,对整个程序的各个部分而言都可见。但是,如果把函数声明为 static
类型,则该函数名除了对该函数声明所在的文件可见外,其它文件都无法访问。
static 也可用于声明内部变量。static 类型的内部变量同自动变量一样,是某个特定函数的局部变量,只能在该函数中使用,但它与自动变量不同的是,不管其所在函数是否被
调用,它一直存在,而不像自动变量那样,随着所在函数的被调用和退出而存在和消失。换句话说,static 类型的内部变量是一种只能在某个特定函数中使用但一直占据存储空间的变
量。静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。
2010年春 9 以下程序运行时输出到屏幕的结果第一行是_______ ,第二行是_________ ,第三行是_________。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> int g(int x,int y) { return x+y; } int f(int x,int y) { { static int x=2; if(y>2) { x=x*x; y=x; } else y=x+1; } return x+y; } void main() { int a=3; printf("%d\n",g(a,2)); printf("%d\n",f(a,3)); printf("%d\n",f(a,2)); } |