C语言实验:变量作用域与生存期探索

需积分: 13 0 下载量 103 浏览量 更新于2024-06-27 1 收藏 1.12MB DOCX 举报
本实验主要关注C语言中的变量作用域与生存期,旨在帮助初学者理解不同类型的变量在程序中的存在方式及其影响。实验内容包括两个部分:验证性实验和问题解答,通过具体实例来深入探讨变量的使用规则。 在验证性实验中,学生需要编写一个函数`float average(float array[], int n)`来计算并返回一维数组中的最高分、最低分和平均分。这里涉及到的关键点是全局变量和局部变量的使用。为了返回三个值,定义了两个全局变量`max`和`min`来保存最高分和最低分,而平均分则通过函数直接返回。在`main`函数中,数组会被填充,然后调用`average`函数,最后输出结果。 问题解答部分涉及到了局部变量、全局变量和静态变量的区别。例如: 1. 当变量`k`声明为全局变量时,它在程序的整个生命周期内都存在,不同的函数可以访问它。在main函数和fun函数中输出的`k`是同一个全局变量,但每次调用fun函数时,局部变量`k`会覆盖全局变量的值,除非`k`被声明为`static`。 2. 如果`k`声明为`static int k=1;`,它将成为一个静态局部变量,只被初始化一次,其值在函数调用之间保留。这意味着每次调用`fun()`,`k`的值会递增,而不是重新初始化为1。 3. 当`k=1;`时,`k`是一个普通的局部变量,每次调用`fun()`,局部变量`k`都会被初始化为1,因此在`fun()`内的输出始终为1,但在`main()`中,输出的是全局变量`k`的值,因此第二次调用后,全局变量`k`的值会变为2。 4. 当第14行为空时,`k`的声明被省略,`main`和`fun`函数中的`k`都引用全局变量`k`。由于`k`在每次调用`fun()`后都执行`k++`,所以第一次调用输出`k=1`,第二次调用输出`k=2`,然后`main`函数输出`k=2`。 这个实验通过实际操作和问题分析,强调了C语言中变量的作用域规则,以及变量类型(如全局变量、局部变量和静态变量)对程序行为的影响。对于C语言初学者,这是一次很好的实践机会,有助于加深对变量管理的理解,并提升编程思维和实验报告编写能力。