C语⾔中static全局变量与普通的全局变量区别
下⾯是中兴通讯2012校招笔试题的⼀道问答题:
1. static全局变量与普通的全局变量有什么区别 ?
  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
  全局变量本⾝就是静态存储⽅式, 静态全局变量当然也是静态存储⽅式。 这两者在存储⽅式上并⽆不同。
  这两者的区别在于⾮静态全局变量的作⽤域是整个源程序, 当⼀个源程序由多个源⽂件组成时,⾮静态的全局变量在各个源⽂件中都是有效的。 ⽽静态全局变量则限制了其作⽤域, 即只在定义该变量的源⽂件内有效, 在同⼀源程序的其它源⽂件中不能使⽤它。由于静态全局变量的作⽤域局限于⼀个源⽂件内,只能为该源⽂件内的函数公⽤,因此可以避免在其它源⽂件中引起错误。
  static全局变量只初使化⼀次,防⽌在其他⽂件单元中被引⽤; 
2.  static局部变量和普通局部变量有什么区别 ?
  把局部变量改变为静态变量后是改变了它的存储⽅式即改变了它的⽣存期。把全局变量改变为静态变量后是改变了它的作⽤域,限制了它的使⽤范围。
  static局部变量只被初始化⼀次,下⼀次依据上⼀次结果值; 
3.  static函数与普通函数有什么区别?
  static函数与普通函数作⽤域不同,仅在本⽂件。只在当前源⽂件中使⽤的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源⽂件中说明和定义。对于可在当前源⽂件以外使⽤的函数,应该在⼀个头⽂件中说明,要使⽤这些函数的源⽂件要包含这个头⽂件.
c语言和c++区别
  static函数在内存中只有⼀份,普通函数在每个被调⽤中维持⼀份拷贝

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。