C语言整理 八 (局部变量、全局变量的作用域与生存期)

变量的作用域

变量的作用域是指变量的作用范围,即变量再程序中可以被访问的区域。
c语言中,每个变量都有一个有效的作用域。比如再函数内部定义的变量,不能再其他函数中引用

局部变量

指再函数体定义的变量和函数的形参。函数内部定义的变量和函数的形参只能在本函数内部使用,函数之外不能使用。

全局变量

在函数体外部定义的变量称为全局变量。全局变量从定义开始可以供本源程序文件中随后的所有函数使用。其作用域为从定义变量的位置开始到本源程序文件结束。
在同一个源程序文件中如果全局变量和局部变量同名,在局部变量作用范围内,局部变量有效。

变量的生存期和存储类型

变量的生存期:指变量占有内存单元的时间。
一个程序在内存中使用的存储空间分为三个部分:程序区、静态存储区和动态存储区。
程序区存放指令代码。动态存储区和静态存储区存放数据。
动态存储区主要用来存放自动类型的局部变量。
静态存储区用来保存全局变量和静态类别的局部变量。程序开始执行时为变量分配存储区,程序执行完毕才释放这些空间。程序执行过程中变量一直占有固定的内存单元。

局部变量的作用域与生存期

1 auto变量:如果没有指定存储类型,均默认为auto变量。当退出函数时释放内存,离开函数后变量的值是不能保留的。

2 register变量:程序中如果有少数变量使用频繁,则存取变量花费的时间较多。为提高执行效率,允许将局部变量的值不放在内存中,而放在CPU的寄存器中,需要时直接从寄存器存取,而不需要从内存中存取,从而提高执行效率。

3 static局部变量(静态局部变量):局部变量在函数调用结束后其值任然保留,以便下次调用时使用。
静态局部变量存储在静态存储区,在整个程序运行期间都不释放。静态局部变量是在编译时赋初值的,以后每次调用函数时不再重新赋初值而是保留上次函数调用结束时的值。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值