变量的作用域和生命周期以及在内存中的存放

本文探讨了变量的创建、类型(局部、全局和静态)及其作用域和生命周期。强调了局部变量的便利性和全局变量可能带来的问题,提倡使用局部变量以提高代码维护性和可读性。

变量有局部变量和全局变量,静态变量

对于变量的创建,其实就是向内存申请空间

局部变量的定义

  1. 在函数开头定义
  2. 在函数的复合语句中定义
  3. 在函数外部定义

静态变量的定义,我们是在定义变量的前面再加上个static(这里只简单的说一下),这样,一个静态变量就创建好啦。对于静态变量,在整个程序期间只初始化一次。当然,如果你只声明但没有给静态变量初始化,那么它默认初始值为0.(全局变量也是默认初始值为0)

这种对变量的定义相对来说,是很基础的,那我就不多说了

在下面的代码中,我们可以看到对局部变量的定义可以有三种,而对于全局变量,我们直接在main函数外定义就行了。

欧克,接下来,我们来认识一下变量的作用域和生命周期

作用域

变量在什么范围内有效,变量的作用取决于变量在哪里定义

生命周期

变量从创建到销毁的这段时间,变量的生命周期取决于变量的存放位置

内存存放

依据变量在内存中的存放位置,我们有可以有局部变量,静态局部变量;全局变量,静态全局变量。而局部变量存放在内存的栈区静态局部变量,全局变量和静态全局变量都是存放在内存的静态存储区 。

我们还是可以看上面的代码

对于在mian函数外定义的变量,我们称为全局变量,他的作用域是在程序运行的这个期间,都可以运用,而它的生命周期,则是从程序的开始到结束。

对于add函数内的变量x,y,它的作用域和生命周期只有在add函数内,出了add函数就会被销毁。

而在main函数内部的a,b,t,它的作用域和生命周期在main函数内有效,而对于t1它的作用域和生命周期只在if语句内有效。

认识完作用域和生命周期是什么之后,我们来看一下静态变量,那么就更容易理解了。

我们来看一下静态变量,在这个代码中,我把sum定义为一个静态变量并初始化为0,也就只有初始化这一次。这个sum变量的作用域就只有在s函数内,它的生命周期跟全局变量一样,也是从程序的开始到结束。我们可以看到,在每次循环进入s函数内,sum加完n,它的值不会被销毁,而是会被存起来放到sum中。

总结:

生命周期:局部变量只存在函数块或代码块期间,而全局变量,存在程序开始到结束

作用域:局部变量在其定义的函数块或代码块内有效。全局变量在整个程序内有效。

对于静态变量,它的作用域与普通变量一致,取决于它在哪个区间内定义,而它的生命周期,是整个程序期间 

但一般推荐使用局部变量,便于维护,可读性强。而使用全局变量,可能会导致程序出错

后续慢慢完善~

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪同学hy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值