一、 函数如何得到多个返回值问题解答
二、扩充 局部变量的规则
三、代码及运行结果
一、
问题一:一个函数怎么返回两个值(最大值和最小值)?
答:因为return只能返回一个值,所以可以通过定义max ,min为全局变量满足需求。
问题二:定义max,min为全局变量,就可以实现了吗?或者说,为什么这样会实现?
答:在一个文件中,一些函数引用了全局变量,若改变了某一函数中全局变量的值,其他函数中的全局变量的值也会改变。利用全局变量的特性,可以在函数间传递数据,函数可以得到多个返回值。
二、扩充:局部变量的规则
1,局部变量不会默认初始化。2,编译系统不会为局部变量分配内存单元,调用时分配临时内存单元,调用结束,变量消失。3,不同函数中可以定义同名变量,他们占据不同的内存单元。
4,在函数,复合语句,main()函数中,定义的变量只在各自的函数体中有效。
三、以一组5个数为例,代码如下:
#include<stdio.h>
#define n 5 //宏定义这组数为5个
int max, min; //定义max min为全局变量
void max_min(int a[n])
{
int i;
max = min = a[0]; //如果在这里定义变量max,min,此时为局部变量,随函数开始而
for (i = 0; i < n; i++) //产生,随函数结束而消失。
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
}
main()
{
int a[n];
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
max_min(a);
printf("max=%d,min=%d\n", max, min); //main()函数中的变量也为局部变量
}
运行结果如下: