zoukankan      html  css  js  c++  java
  • static变量与普通变量的异同


    1、static局部变量与普通局部变量的异同

    相同点:都是局部变量,在函数内部定义,仅能被该模块内部的语句所访问。
    不同点:
    1)内存分配与释放:
    static修饰的局部变量在内存中存放在静态存储区,static修饰的局部变量只有在整个程序结束的时候才会自动释放。若下次调用该局部变量所在的函数时,不需要对它重新声明,且会保留上一次调用存入的值。
    普通局部变量存放在堆栈区,动态分配,其离开作用域‘{}’后,就会自动销毁,释放内存空间,无法再次使用此变量。
    static局部变量在编译阶段,函数还未执行的时候,就已经分配了变量空间。
    普通局部变量只有在执行到定义变量的语句时,才会分配内存空间。
    2)初始化
    static局部变量不初始化时,默认值为0;
    普通局部变量不初始化时,默认值为随机值。


    2:static全局变量与普通全局变量的异同
    两者在存储方式上都是静态存储,这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

  • 相关阅读:
    python之timeit模块
    python isinstance函数
    继承
    冒泡排序&&选择排序
    监听器
    被钝化的代码
    Ajax验证用户名
    原生ajax访问服务器所展现的现象
    今天
    随机点名
  • 原文地址:https://www.cnblogs.com/y4247464/p/11733263.html
Copyright © 2011-2022 走看看