C++变量的存储类别

本文详细介绍了C++中的变量存储类别,包括动态存储和静态存储方式,以及auto、static、register和extern四种存储类别的特点和应用场景。重点讲解了静态局部变量和静态外部变量的使用和区别,强调了静态变量在内存中的生命周期和作用域。
摘要由CSDN通过智能技术生成

目录

1.动态存储方式和静态存储方式

2.自动变量

3.用static声明静态局部变量

4.用register声明寄存器变量

5.用extern声明外部变量

(1)在一个文件内声明全局变量

(2)在多文件的程序中声明外部变量

6.用static声明静态外部变量


1.动态存储方式和静态存储方式

       变量的属性有作用域和存储期(也称生命期)等。作用域是从空间的角度来分析的,分为全局变量和局部变量。存储期是指变量在内存中的生命周期,这是从变量值存在的时间角度来分析的。存储期可以分为静态存储期和动态存储期。这是由变量的静态存储方式和动态存储方式决定的。

       所谓静态存储方式是指在程序运行期间,系统对变量分配固定的存储空间。而动态存储空间则是在程序运行期间,系统对变量动态地分配存储空间

       内存中供用户使用的存储空间可分为3部分,即程序区、静态存储区和动态存储区。程序中所用的数据分别存放在静态存储区和动态存储区中。

       全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些空间。在程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。

      在动态存储区中存放以下数据:(1)函数形式参数。(2)函数中定义的变量(指未加static的局部变量)。(3)函数调用时的现场保护和返回代码等。对于这些数据,在函数调用开始时分配动态存储空间,函数调用结束时释放这些空间。在程序执行过程中,这种分配和释放是动态的。如果在一个程序中两次调用同一函数,则要进行两次分配和释放,而两次分配给此函数中局部变量的存储空间地址可能是不相同的。如果在一个程序中包含若干个函数,每个函数中的局部变量的存储期并不等于整个程序的执行周期,它只是整个程序执行周期的一部分。根据函数调用的情况,系统对局部变量动态地分配和释放存储空间。

      在C++中变量除了有数据类型的属性之外,还有存储类别的属性。存储类别指的是数据在内存中存储的方法。综上,存储方法有静态存储和动态存储两大类。C++中变量的存储类别有4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。根据变量的存储类别,可以知道变量的作用域和存储期。

2.自动变量

      函数中的局部变量,如果不加关键字static加以声明,编译系统对它们是动态地分配存储空间的。函数的形参和在函数中的定义的变量(包括在复合语句中定义的变量),都属于此类。在调用该函数时,系统给形参和函数中定义的变量分配存储空间,数据存储在动态存储区中。在函数调用结束时就自动释放这些空间。如果是在复合语句中定义的变量,则在变量定义时分配存储空间,在复合语句结束时自动释放空间。因此这类局部变量称为自动变量(auto viriable)。自动变量用关键字auto作存储类别的声明(auto可省略)。如:

int f(int a)   //定义f函数,
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值