字体
第(5/7)页
关灯
   存书签 书架管理 返回目录
小值。

    调用一个函数只能得到一个返回值,今用全局变量在函数之间“传递”数据。程序如下:

    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");

    
上一页 目录 下一页