• 静态存储区与全局变量


    接下来说存储类说明符的第二个知识点——静态变量,它包括三种:全局变量/外部变量,静态全局变量,静态局部变量

    非常重要!工作中必用。接近于底层的一个理解。

    特点:

    静态变量存储在静态区/静态全局区/静态存储区,因为内存区域分5个区:堆区,栈区,字符常量区,静态区,代码区。

    这个内存区域有什么特点?我们知道栈区的特点是 :变量的申请与释放都是由操作系统帮我们管理的,而且变量的生命周期在它的作用域结束的时候,就放掉了。

    静态存储区的特点:

    1 静态存储区的变量/我们申请的空间 会自动初始化为0。不管是int a,你定义好了这个a之后,也不用去初始化,a里面的值就是0.你定义一个指针 int * p,p里面就是NULL. 你定义一个结构体,有多个成员,每个成员都是0.定义一个数组,数组的所有成员都被初始化为0.

    2.生命周期与程序共存亡。

    像栈区的局部变量,它的作用域就是这个变量所在的{}范围内,从它定义的这一行开始直到{}结束,这么一个区域。

    而静态变量是与程序共存亡的,从它创建开始到软件关闭,这块空间才会释放。

    3.静态存储区的静态变量在程序运行的时候,在加载资源阶段分配空间

    解释一下"加载资源阶段分配空间":一个程序执行入口是主函数,当软件一打开的时候,不会直接执行主函数的,是要加载一些资源,也就是软件要运行所必要的资源,加载到内存。 

    资源加载完了,软件运行的环境就相当于搭建好了,资源加载完了,开始执行主函数。

     即使说静态变量定义在主函数里面了,这个变量依然是在程序加载的阶段申请空间

    全局变量 :

    位置:写在全局的位置。?!

    只要不在任何函数内,就叫 全局变量。

     全局变量会自动初始化为0.

    当然也可以手动初始化成 想要的值。

    当全局变量与局部变量重名,在局部位置,局部变量有效

  • 相关阅读:
    GET or POST?
    ASP.NET AJAX简述
    C# 后台调用存储过程
    S,C,SC,表
    js判定浏览器的种类
    sql 数据表添加或删除或修改字段 alter
    sql判定数据表是否存在,存在删除,再新建表或修改表名
    sql 所有的表建好后,为表添加外键约束
    打开office弹出steup error 的解决办法
    a标签的属性
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10568017.html
Copyright © 2020-2023  润新知