一、C语言返回值
在C语言中,一个函数最多只能实现一个返回值。
虽然return语句只能返回一个值,但可以通过其他方式间接返回多个值,例如,可以通过返回一个数组或结构体指针,来间接返回多个值,数组或结构体中的每个元素可以视为一个单独的返回值。
本章使用数组结合指针,来实现多返回值的函数。
二、程序介绍
设置一个函数,实现打印数组中的最小值、最小值出现次数、最小值出现下标。
三、程序设计
#include <stdio.h>
void Mysum(int *min,int *count,int *array,int length,int *number) // 利用指针传递参数,主要形参和实参是一级(变量对应变量,指针对应指针,数组本质是一种特殊指针)
{
int i,j;
*min = array[0];
*count = 1;
for (i = 1; i < length; i++)
{
if(array[i] < *min)
{
*min = array[i];
*count = 1;
j=0;
number[j] = i + 1; // 数组下标默认从0开始,+1是为了符合日常
}
else if(array[i] == *min)
{
(*count)++;
j++;
number[j] = i + 1;
}
}
}
int main(int argc, char const *argv[])
{
int a[6]={30,5,5,20,30,5}; // 定义数组
int Min; // 最小值
int Count; // 最小值出现次数
int Length; // 数组大小
int Number[Length]; // 定义数组,用于存放最小值下标
Length = sizeof(a)/sizeof(a[0]); // 数组大小
Mysum(&Min,&Count,a,Length,Number); // 利用指针传递参数,主要形参和实参是一级(变量对应变量,指针对应指针,数组本质是一种特殊指针)
printf("最小值 Min = %d\n",Min);
printf("最小值出现次数 Count = %d\n",Count);
int i;
printf("最小值下标 Number = ");
for (i = 0; i < Count; i++) // 下标数组的大小要小于,重复最小值出现次数 ,否则多的会自动补0
{
printf(" %d", Number[i]);
}
printf("\n");
return 0;
}