黑马程序员技术交流社区

标题: 当函数需要返回多个值时,用指针操作实参变量. [打印本页]

作者: wx_byrDDXsc    时间: 2016-3-27 21:19
标题: 当函数需要返回多个值时,用指针操作实参变量.
/*

  编写1个函数. 该函数返回1个整型数组中的最大值、最小值、平均值、累积和.

   分析: 一个函数如果需要返回多个返回值,需要使用指针.

*/

#include <stdio.h>

void jiSuanArr(int* arr,int len,int* pMax,int* pMin,double* pAvg,int* pSum);
int main()
{
    //定义变量
    int max = 0,min = 0,sum = 0;
    double avg = 0;
    //定义数组,定义长度.
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int len = sizeof(arr)/sizeof(arr[0]);
    //调用函数,传入参数.参数是之前定义的变量的地址,用于在函数中被指针操作修改.
    jiSuanArr(arr, len, &max, &min, &avg, &sum);
    //输出结果.
    printf("最大值是:%d\n最小值是:%d\n平均值是:%.2lf\n累加和:%d\n",max,min,avg,sum);

    return 0;
}

void jiSuanArr(int* arr,int len,int* pMax,int* pMin,double* pAvg,int* pSum)
{
    //这里的指针指向的就是main函数中定义的对应的变量.操作它们实际就是在操作它们指向的变量.
    //求最大值,最小值.
    *pMax = INT32_MIN;
    *pMin = INT32_MAX;
    for (int i = 0; i < len; i++)
    {
        if (*pMax < arr)
        {
            *pMax = arr;
        }
        if (*pMin > arr)
        {
            *pMin = arr;
        }
        //求累加和.
        *pSum = *pSum + arr;
    }
    //求平均值.
    *pAvg = (double)*pSum / len;
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2