zoukankan      html  css  js  c++  java
  • 静态存储区与全局变量

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

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

    特点:

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

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

    静态存储区的特点:

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

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

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

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

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

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

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

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

    全局变量 :

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

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

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

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

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

  • 相关阅读:
    Winform读取app.config文件
    判断本机只能运行一个winform程序
    [导入][链接] Top 10: The best, worst... and craziest uses of RFID
    [导入][Tips] 在Ubuntu下限制本机使用的网络带宽
    [导入][一点一滴学英语] 20061205
    [导入][链接] Linux Distribution Chooser
    [导入][链接] Open Source Java Clustering
    [导入][链接] 关于Vista的关机选项
    [导入]Drip, Transfusion, Perfusion还是Infusion?关于一个词的翻译
    [导入][阅读] "Computer Programmer" vs. "Software Developer"
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10568017.html
Copyright © 2011-2022 走看看