飞奔的王麻子
分为两种情况:1)全局作用域:包括全局变量和函数。C默认是external的,也就是说,不再变量和函数前面加static的话,默认为extern,任何其它文件都可以访问。若加了static限定词的话,只有本文件中的其它函数、变量可以访问。2)局部作用域:针对的是局部变量。若不加static,则默认为auto,系统自动分配,其生命周期为定义开始到函数结束(在for或if等中定义并使用的变量,生命结束的时间为该条件或循环结束;对于标准C来说,不能在条件或循环中定义变量的,C++可以)。也就是说,你每次调用函数时,系统会为变量重新分配存储空间。若加static,表示该变量是静态的,编译时只分配一次空间,后面他的生存期和程序一样长,即使它所在的函数被销毁。从空间分配看,自动类变量是在堆栈中的,堆栈由系统自动维护,而被static修饰的变量则是被安置在数据段,在编译时就已经确定了。