zoukankan      html  css  js  c++  java
  • C的存储类别

    1.存储类别:

    存储类别指的是数据在内存中存储的方法。分为静态存储和动态存储两大类。

    包含4种:

    自动的(auto)          函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。

    静态的(static)        局部变量的值在函数调用结束后不消失而保留原值,

    寄存器的(register)           C语言允许将局部变量得值放在CPU中的寄存器中,在寄存器中的变量是不能取地址。且数量有限一般为2 到3个。

                  只有局部自动变量和形式参数才能够被定义为寄存器变量,全局变量和局部静态变量都不能被定义为寄存器变量。      

    外部的(extern)      外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。

                  如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。

    2.内存中用户存储空间的分配情况(三种):

    程序区:存放程序语句

    静态存储区:全局变量,局部静态变量(extern,static)。存放全局变量,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。

    动态存储区:函数形参变量(在调用函数时给形参分配存储空间);局部动态变量(auto ,register);函数调用现场保护和返回地址等。

     任何临时变量都是处于栈区的,包括在main()函数中定义的变量 ;

    const修饰局部变量则存放在栈区,如果修饰全局变量就存放在全局区

    参考资料

     寄存器变量:https://www.cnblogs.com/reality-soul/p/6369792.html

  • 相关阅读:
    ng-class中的if else判断
    Sass 的使用
    pre 标签的使用
    C++操作 SQL数据库 实例 代码步骤
    自己写的一个操作Mysql的简单的实例
    C++ 链接Mysql 函数介绍
    Mysql 操作命令 详解
    MFC程序开始的执行过程详述
    Java各种日期格式的获取和设置指定日期
    DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
  • 原文地址:https://www.cnblogs.com/Gimiracle/p/13865443.html
Copyright © 2011-2022 走看看