static变量与普通变量的异同
1、static局部变量与普通局部变量的异同
相同点:都是局部变量,在函数内部定义,仅能被该模块内部的语句所访问。
static修饰的变量不同点:
1)内存分配与释放:
static修饰的局部变量在内存中存放在静态存储区,static修饰的局部变量只有在整个程序结束的时候才会⾃动释放。若下次调⽤该局部变量所在的函数时,不需要对它重新声明,且会保留上⼀次调⽤存⼊的值。
普通局部变量存放在堆栈区,动态分配,其离开作⽤域‘{}’后,就会⾃动销毁,释放内存空间,⽆法再次使⽤此变量。
static局部变量在编译阶段,函数还未执⾏的时候,就已经分配了变量空间。
普通局部变量只有在执⾏到定义变量的语句时,才会分配内存空间。
2)初始化
static局部变量不初始化时,默认值为0;
普通局部变量不初始化时,默认值为随机值。
2:static全局变量与普通全局变量的异同
两者在存储⽅式上都是静态存储,这两者的区别在于⾮静态全局变量的作⽤域是整个源程序,当⼀个源程序由多个源⽂件组成时,⾮静态的全局变量在各个源⽂件中都是有效的。⽽静态全局变量则限制了其作⽤域,即只在定义该变量的源⽂件内有效,在同⼀源程序的其它源⽂件中不能使⽤它。由于静态全局变量的作⽤域局限于⼀个源⽂件内,只能为该源⽂件内的函数公⽤,因此可以避免在其它源⽂件中引起错误。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论