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

  • 相关阅读:
    C++中四大强制类型转换!
    队列(queue)的实现
    栈(stack)的实现
    单向链表
    十种排序算法详解及C++实现
    extern “C”
    C语言内存分配及各种数据存储位置
    Python中的classmethod与staticmethod
    关于ORM,以及Python中SQLAlchemy的sessionmaker,scoped_session
    Python中的SQLAlchemy
  • 原文地址:https://www.cnblogs.com/Gimiracle/p/13865443.html
Copyright © 2011-2022 走看看