当前位置: 首页 > news >正文

【时时三省】(C语言基础)局部变量和全局变量例题

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

例题

有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。解题思路:调用一个函数可以得到一个函数返回值,现在希望通过函数调用能得到。个结果。可以利用全局变量来达到此目的。

编写程序:

运行结果: 

程序分析: 

main函数在调用average函数时,把实参数组score的首元素地址和整数10传递给形参数组array和形参变量n ,函数average的值是return语句带回的aver的值(在主函数中赋给了变量ave)。这样,在main函数中就得到了平均分。而最高分和最低分是通过全局变量Max和Min获得的。由于Max和Min是全局变量,是公用的,各函数都可以直接引用它们,也可以向它们赋值。现在在average函数中,改变了它们的值,最后把最高分和最低分存放在Max和Min中。在主函数可以使用这两个变量的值。因此在main函数中输出的Max和Min就是希望得到的最高分和最低分。

但是,建议不在必要时不要使用全局变量,原因如下:

①全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。

②它使函数的通用性降低了,因为如果在函数中引用了全局变量,那么执行情况会受到有关的外部变量的影响,如果将一个函数移到另一个文件中,还要考虑把有关的外部变量及其值一起移过去。但是若该外部变量与其他文件的变量同名时,就会出现问题。这就降低了程序的可靠性和通用性。在程序设计中,在划分模块时要求模块的“内聚性”强、与其他模块的“耦合性”弱。即模块的功能要单一(不要把许多互不相干的功能放到一个模块中),与其他模块的相互影响要尽量少,而用全局变量是不符合这个原则的。一般要求把C程序中的函数做成一个相对的封闭体,除了可以通过“实参一形参”的渠道与外界发生联系外,没有其他渠道。这样的程序移植性好,可读性强。

③使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。由于在各个函数执行时都可能改变外部变量的值,程序容易出错。因此,要限制使用全局变量。

注意:如果在同一个源文件中,全局变量与局部变量同名,这时会出现什么情况呢?请考虑是按哪一种情况处理:

( 1 )出错;

( 2 )局部变量无效,全局变量有效:

( 3 )在局部变量的作用范围内,局部变量有效,全局变量被“屏蔽”,即它不起作用。请先分析下面的程序。

例题

若外部变量与局部变量同名,分析结果。

编写程序:

运行结果: 

8

程序分析:

在此例中,故意重复使用a和b作变量名,请读者区别不同的a和b的含义及作用范围。程序第2行定义了全局变量a和b,并对其初始化。第3行是main函数,在main函数中(第6行)定义了一个局部变量a。局部变量a的作用范围为第6~8行。

在此范围内全局变量a被局部变量a屏蔽,相当于全局变量a在此范围内不存在(即它不起作用),而全局变量b在此范围内有效。因此第6行中max ( a,b )的实参a应是局部变量a,所以max ( a,b )相当于max ( 8,5 )。它的值为8。

第10行起定义max函数,形参a和b是局部变量。全局变量a和b在max函数范围内不起作用,所以函数max中的a和b不是全局变量a和b,而是形参a和b,它们的值是由实参传给形参的,即8和5。从运行结果看,max ( a,b )的返回值为8,而不是5。验证了以上的分析。

相关文章:

  • 【51单片机】3. 数码管大师
  • 【CUDA 】核函数性能分析工具
  • PLC入门【2】PLC的接线
  • 系统模块与功能设计框架
  • 【Java学习笔记】System类
  • Linux下的进程调度机制
  • 深入理解 Java 的反射、注解与动态代理
  • 2025新高考二卷选择题第一题题解
  • LangChain4j 1.x 核心源码剖析-基础篇
  • 【项目实训项目博客】用户使用手册
  • Secs/Gem第十二讲(基于secs4net项目的ChatGpt介绍)
  • 【第四十八周】HippoRAG 2 复现与分析(二):索引阶段代码分析
  • 嵌入式学习笔记 - freeRTOS为什么中断中不能使用互斥量
  • 使用自定义模板的方式批量切割图片。
  • 从零开始编写Mcp Server,发布上线,超简单极速入门
  • Amazon RDS on AWS Outposts:解锁本地化云数据库的混合云新体验
  • 循环神经网络(RNN):从理论到翻译
  • 标准代码项目开发流程学习指南
  • leetcode Top100 238. 除自身以外数组的乘积|数组系列
  • 【Ragflow】27.RagflowPlus(v0.4.1):小版本迭代,问题修复与功能优化
  • 外贸网站怎么做优化/博客网
  • 寺庙招人做网站维护吗/搭建网站的步骤和顺序
  • wordpress主题知言/seo下拉优化
  • 织梦网站做自动生成地图/沈阳百度推广排名优化
  • wordpress模板在哪购买/关键词优化报价查询
  • 番禺制作网站开发/关键词首页排名优化公司推荐