请问static在C当中有什么用?求具体解释。
3 回答
飞奔的王麻子
TA贡献12条经验 获得超5个赞
分为两种情况:
1)全局作用域:包括全局变量和函数。C默认是external的,也就是说,不再变量和函数前面加static的话,默认为extern,任何其它文件都可以访问。若加了static限定词的话,只有本文件中的其它函数、变量可以访问。
2)局部作用域:针对的是局部变量。若不加static,则默认为auto,系统自动分配,其生命周期为定义开始到函数结束(在for或if等中定义并使用的变量,生命结束的时间为该条件或循环结束;对于标准C来说,不能在条件或循环中定义变量的,C++可以)。也就是说,你每次调用函数时,系统会为变量重新分配存储空间。若加static,表示该变量是静态的,编译时只分配一次空间,后面他的生存期和程序一样长,即使它所在的函数被销毁。从空间分配看,自动类变量是在堆栈中的,堆栈由系统自动维护,而被static修饰的变量则是被安置在数据段,在编译时就已经确定了。
- 3 回答
- 2 关注
- 1477 浏览
添加回答
举报
0/150
提交
取消