C语言函数如何返回多个值?335


简介

在C语言中,函数通常只返回一个值,但有些情况下,我们需要返回多个值。本文将介绍C语言中返回多个值的不同方法,并提供代码示例。

指针

最简单的方法是使用指针。函数可以返回指向变量或结构的指针,该变量或结构包含所需的值。调用函数后,可以使用指针访问这些值。
#include
void get_min_max(int *arr, int size, int *min, int *max) {
*min = arr[0];
*max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < *min) {
*min = arr[i];
} else if (arr[i] > *max) {
*max = arr[i];
}
}
}
int main() {
int arr[] = {1, 5, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
int min, max;
get_min_max(arr, size, &min, &max);
printf("最小值:%d", min);
printf("最大值:%d", max);
return 0;
}

结构体

另一种方法是使用结构体。函数可以返回一个包含所需值的结构体。
#include
typedef struct {
int min;
int max;
}MinMax;
MinMax get_min_max(int *arr, int size) {
MinMax min_max;
= arr[0];
= arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < ) {
= arr[i];
} else if (arr[i] > ) {
= arr[i];
}
}
return min_max;
}
int main() {
int arr[] = {1, 5, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
MinMax min_max = get_min_max(arr, size);
printf("最小值:%d", );
printf("最大值:%d", );
return 0;
}

数组

在某些情况下,可以将数组用作函数返回值。但是,需要注意,这可能会导致返回一个临时数组的副本,而不是指向原始数组的指针。
#include
int *get_min_max(int *arr, int size) {
int *min_max = malloc(2 * sizeof(int));
min_max[0] = arr[0];
min_max[1] = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < min_max[0]) {
min_max[0] = arr[i];
} else if (arr[i] > min_max[1]) {
min_max[1] = arr[i];
}
}
return min_max;
}
int main() {
int arr[] = {1, 5, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr[0]);
int *min_max = get_min_max(arr, size);
printf("最小值:%d", min_max[0]);
printf("最大值:%d", min_max[1]);
free(min_max);
return 0;
}


C语言提供了多种方法来返回多个值。选择哪种方法取决于特定情况和所需的效率和内存管理。

2024-10-17


上一篇:C 语言中的数学函数

下一篇:C语言中强大多用的printf()函数