调用一个函数只能得到一个返回值,今用全局变量在函数之间“传递”数据。程序如下:
int max,min; /*全局变量*/
void max_min_value(int array[],int n)
{int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1;p
if(*p>max)max=*p;
else if (*p
return;
}
main()
{int i,number[10];
printf("enter 10 integer umbers:\n");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
max_min_value(number,10);
printf("\nmax=%d,min=%d\n",max,min);
}
说明:
1) 在函数 max_min_value 中求出的最大值和最小值放在 max 和 min 中。由于它们是全局,
因此在主函数中可以直接使用。
2) 函数 max_min_value 中的语句:
max=min=*array;
array 是数组名,它接收从实参传来的数组 numuber 的首地址。
*array 相当于*(&array[0])。上述语句与 max=min=array[0];等价。
3) 在执行 for 循环时,p 的初值为 array+1,也就是使 p 指向 array[1]。以后每次执行 p++,
使 p 指向下一个元素。每次将*p 和 max 与 min 比较。将大者放入 max,小者放 min。
谭浩强 C 语言程序设计 2001 年 5 月 1 日
4) 函数 max_min_value 的形参 array 可以改为指针变量类型。实参也可以不用数组名,而
用指针变量传递地址。
【例 10.19】程序可改为:
int max,min; /*全局变量*/
void max_min_value(int *array,int n)
{int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1;p
if(*p>max)max=*p;
else if (*p
return;
}
main()
{int i,number[10],*p;
p=number; /*使p指向number数组*/
printf("enter 10 integer umbers:\n");