昨天面试一外企,被问到这个问题,看似如此简单,还是打错了。
问:static在C中有什么作用?
答:static在C中用于修饰全局变量、局部变量以及函数。static的第1个作用是隐藏。被static修饰的全局变量和函数不具有全局可见性,亦即所有未加static修饰的全局变量和函数都具有全局可见性。例如,一下两个文件就编译通不过:
/* file1.c */
static int a;
/* file2.c */
main(){
a++;
}
但是这样以下便是可以的:
/* file1.c */
int a;
/* file2.c */
#include <stdio.h>
main(){
printf("a=%d\n", a);
}
static 作为函数的前缀仅仅起到了隐藏的作用,修饰变量时除此之外却还有其他的功能:让所修饰的变量存储在静态数据区并且在程序启动时初始化为0. static 修饰局部变量时,其作用域仅限于所声明的块,尽管程序退出该块以后该静态局部变量依然存在。
更详细的总结可以参考:http://blog.csdn.net/daibei0402/article/details/5980560