变量的作用域和生命周期

2023-11-14

目录


作用域

作用域是程序设计概念,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的范围就是其作用域。通俗来说就是它在哪里起作用哪里就是它的作用域。

局部变量的作用域
  • 局部变量又称内部变量,是指在一个函数内部定义的变量或复合语句内部定义的变量
  • 作用域
  • 那么局部变量的作用域如何确定?举个列子,下面为一段代码,很明显他是能够编译成功的
    在这里插入图片描述
    但若我们改成这样它还能正确编译吗?
    在这里插入图片描述
    在这里插入图片描述
    答案如你所见编译器报错:“a”是未声明的标识符,可这是为什么呢?我们知道变量a是在我框出来的范围内创建的,而出了这个范围就不能被使用了,可见变量是有使用范围的,而限定这个变量的范围就是它的作用域。那这个范围怎么确定呢?
    在这里插入图片描述
    可见,最外面创建的变量a的作用域就是我所框出来的部分。相比于内部创建的变量a,它两相同的是:他们可使用的范围都是其外部首个大括号内部的范围,出了该范围就不被编译器认可了。所以,我们认为:局部变量的作用域就是变量所在的局部范围
全局变量的作用域
  • 全局变量:又称外部变量,是指在函数外部创建的变量,其可以被本程序所有对象或者函数引用的变量。
  • 举几个例子,可见全局变量的可以在该程序的任意地方进行使用
    在这里插入图片描述
    甚至不同的源文件都可以用同一个全局变量,只不过需要先声明一下,该全局变量是外部引进的,用函数extern就行了。
    在这里插入图片描述
    所以我们认为,全局变量的作用域可以说是整个工程

生命周期

生命周期在编程中是指一个变量、函数、还是其他什么的创建到销毁之间的这个时间段。

局部变量的生命周期
  • 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
全局变量的生命周期
  • 全局变量的生命周期是:整个程序的生命周期

值得注意的是:我们应该尽量少的使用全局变量,因为其在程序执行中始终占用存储单元,这样太过浪费内存空间,降低了函数的独立性、通用性、可靠性及可移植性;而且特别易出错。

在这里插入图片描述

如果这份博客对铁们有所帮助,或能够使你产生共鸣的,请不要吝啬你的点赞关注哟,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧 >_<…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变量的作用域和生命周期 的相关文章

  • Python subplots() 使用说明

    plt subplots 官方教程 link 参数 matplotlib pyplot subplots nrows 1 ncols 1 sharex False sharey False squeeze True subplot kw N
  • 雅可比矩阵和Hessian矩阵

    Jacobian矩阵和Hessian矩阵 1 Jacobian 在向量分析中 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵 其行列式称为雅可比行列式 还有 在代数几何中 代数曲线的雅可比量表示雅可比簇 伴随该曲线的一个代数群 曲线可以嵌入其
  • Linux搭建测试环境详细步骤

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 1 Linux系统 2 JDK 3 Tomcat 4 MySQL 工具下载 可从官网下载 已把安装工具存于百度网盘 链接 https pan baidu co

随机推荐

  • Jmeter:使用代理录制脚本

    目录 前言 介绍下各设置项 前言 当我们想要录制并回放特定应用程序或网站的交互时 使用JMeter的代理是一种常见且有效的方法 通过配置JMeter代理 它可以拦截并记录客户端与目标应用程序之间的HTTP或HTTPS通信 然后生成对应的测试
  • 如何重装Linux系统

    大家都知道我们平常所用的windows系统 可以很方便的重装系统 有U盘安装 还有光盘安装 那么我们在Linux下如何重装系统呢 其实和Windows下方法大同小异 如果你手上正好有个U盘的话 那就可以试试做一个USB Linux启动盘 它
  • javaee springMVC Map ModelMap ModelAndView el和jstl的使用

    pom依赖
  • ELK Stack 日志平台性能优化实践

    性能分析 服务器硬件Linux 1cpu4GRAM 假设每条日志250Byte 分析 logstash Linux 1cpu 4GRAM 每秒500条日志 去掉ruby每秒660条日志 去掉grok后每秒1000条数据 filebeat L
  • EduCoder_web实训作业--CSS从入门到精通——文本与字体样式

    大家注意了 由于这次好多代码都是分开的 为了方便我把每一关所有代码都发出来了 只要全选粘贴复制就可以了 第二关和第三关的答题区域都是最后一个文件夹 第一关 body 背景渐变 background webkit linear gradien
  • 50岁贷款投资的人,到底经历了什么?

    虽说 成功的投资者大多是孤独的 但是 在学习成长的过程中 参与交流讨论的好处还是很大的 一方面三人行必有我师 一方面通过他人的经验教训 深化自己的思考 前两天 看到这样一个提问 我的中国银行信用卡可以贷款2 6利率 三年还清 共贷15万 我
  • Python 模块 ddt 数据驱动测试

    简介 ddt 提供了一种方便的方法来实现数据驱动测试 Data Driven Testing 数据驱动测试是一种测试方法 通过将测试数据与测试逻辑分开 可以使用不同的数据集来运行相同的测试用例 这样可以提高测试的灵活性和可维护性 减少代码的
  • 为什么说快速排序是性能最好的排序算法?

    刚刚学习了排序这一章 看到了书中最后的一个总结表 心想从表上来看 堆排序不该是最好的排序算法么 不管最好 最坏还是平均情况 时间复杂度都是O nlogn 而且还不像快排和归并排序那样占空间 为什么说快速排序是最好的算法呢 其实经过实验 会发
  • 手把手带你利用苹果手机使用美区礼品卡升级ChatGPT Plus,轻松搞定!

    大家好 我是五竹 昨天用苹果手机尝试了一下 借助App Store 苹果应用商店 升级 Plus 成功了 一共升级了三个号 有两个一气呵成 轻松搞定 最后一个可能触发风控了 但第一时间反馈给了苹果客服 5分钟不到就解决了 不得不说别人家的客
  • 下载Visio2013镜像路径以及安装Visio2013软件

    下载Visio2013镜像路径以及安装Visio2013软件 下载镜像安装路径 https exmail qq com cgi bin ftnExs download k 5736333137c49bbd8e5ddf1c106407561d
  • Java进阶知识点5:服务端高并发的基石 - NIO与Reactor模式以及AIO与Proactor模式

    一 背景 要提升服务器的并发处理能力 通常有两大方向的思路 1 系统架构层面 比如负载均衡 多级缓存 单元化部署等等 2 单节点优化层面 比如修复代码级别的性能Bug JVM参数调优 IO优化等等 一般来说 系统架构的合理程度 决定了系统在
  • 在QGIS下开发python插件

    本文来自CSDN博客 转载请标明出处 http blog csdn net xiluoduyu 出于研究sextante代码的需要 抽空查了下QGIS下python插件的开发流程 具体的操作参考英文的PyQGIS 的开发帮助文档 QGIS是
  • 生成时间段内每一天

    String bigtimeStr 2019 07 01 String endtimeStr 2019 08 01 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date bigt
  • 使用sleuth实现微服务跟踪

    在微服务架构中 众多的微服务之间互相调用 如何清晰地记录服务的调用链路是一个需要解决的问题 同时 由于各种原因 跨进程的服务调用失败时 运维人员希望能够通过查看日志和查看服务之间的调用关系来定位问题 而Spring cloud sleuth
  • aix卷组故障维护

    author skatetime 2009 04 24 故障描述 4 20日早晨 发现日报没有正常发送 登录数据库备机查看原因 查看系统的log命令 errpt more 没有发现什么异常 不过发现有如下错误 F3931284 041005
  • 《动手学深度学习》(七) -- 边界框和锚框

    1 边界框 在目标检测中 我们通常使用边界框 bounding box 来描述对象的空间位置 边界框是矩形的 由矩形左上角的以及右下角的 x x x和 y y y坐标决定 另一种常用的边界框表示方法是边界框中心的
  • 在js中 String 转json

    第一种方式 使用js函数eval testJson eval testJson 是错误的转换方式 正确的转换方式需要加 testJson eval testJson eval 的速度非常快 但是他可以编译以及执行任何JavaScript程序
  • 人脸识别技术也被应用到了移动支付领域

    随着智能手机及互联网的发展 移动支付已经成为了目前我国增速最快的支付方式 在移动支付发展过程中 各种新型的支付方式层出不穷 如二维码支付 NFC支付等 近年来 伴随着人工智能 机器学习及传感器的逐步发展 生物识别技术也被应用到了移动支付领域
  • python提取邮件的附件,以excel为例

    配置邮箱 读取基本的邮件内容请参考 python读取并解析邮箱邮件 读取邮件主题 内容 时间 以excel为例 获取邮件 email value config imap server imap exmail qq com username
  • 变量的作用域和生命周期

    目录 作用域 局部变量的作用域 局部变量的生命周期 生命周期 全局变量的作用域 全局变量的生命周期 作用域 作用域是程序设计概念 一段程序代码中所用到的名字并不总是有效 可用的 而限定这个名字的可用性的范围就是其作用域 通俗来说就是它在哪里