函数如何使用引用返回所需的数字?

How can a function return the required numbers using the reference?

本文关键字:数字 返回 何使用 引用 函数      更新时间:2023-10-16

我做了一个函数,用户需要输入数组大小,数组值,它将返回该数组中最大和最小的数字。

我的问题是如何通过引用返回这两个值?

这是我的代码:

void function()
{
int i, n;
int arr[10];
cout << "Enter the size of array: ";
cin >> n;
cout << endl;
for (i = 0; i < n; ++i)
{
cout << "Number " << i + 1 << " : ";
cin >> arr[i];
}
for (i = 1; i < n; ++i)
{
if (arr[0] < arr[i])
arr[0] = arr[i];
}
cout << "Biggest number is: " << arr[0];
cout << endl;
for (i = 1; i < n; ++i)
{
if (arr[0] > arr[i])
arr[0] = arr[i];
}
cout << "Smallest number is: " << arr[0];
}
int main()
{
function();
return 0;
}

在C++中,使用向量、迭代器和算法更为常见。 问题的简单解决方案是:

std::vector<int> a1{ {1, 2, 3} };
const auto result = std::minmax_element(a1.begin(), a1.end());
auto forwardIteratorToMinimum = result.first;
auto forwardIteratorToMaximum = result.second;

如果您希望函数返回一对数字,则可以使用std::pair来实现此目的。

std::pair<int, int> findMaxAndMin(int* array, int arraySize) {
int biggest = std::numeric_limits<int>::min();
int smallest = std::numeric_limits<int>::max();
for (int i = 0; i < arraySize; i++) {
if (array[i] > biggest) {
biggest = array[i];
}
if (array[i] < smallest) {
smallest = array[i];
}
}
return std::make_pair(biggest, smallest);
}
int main() {
int testArray[10] = {10, 9, 8, 7, -69, 100, -200, 300, 1, 2};
auto result = findMaxAndMin(testArray, 10);
std::cout << "biggest: " << result.first
<< ", smallest: " << result.second << std::endl;
}

但是,此示例仅用于学习目的,通常我们不会在C++代码中使用 C 样式数组。要存储整数的可变长度数组,您应该使用std::vector<int>.然后,要在向量中找到最大或最小元素,您应该使用std::max_elementstd::min_element。稍后,如果您想返回更复杂的内容,而不仅仅是一对两个整数,您应该定义自己的structclass并编写一个返回自定义类型的函数/方法。

另请注意,应将负责计算的逻辑和负责用户输入/输出的逻辑分开。我只给了你负责计算的函数,你可以给自己写一个负责要求用户输入的函数。

要通过引用返回结果,您必须

1( 更改函数的定义以返回引用(与号&(

从:

void function()
{
// ...
}

自:

void function(int& min_value, int& max_value)
{
// ...
}

2(在函数内部,您必须为通过引用返回的变量赋值(min_valuemax_value(

3(调用函数时,必须提供变量来"容纳"结果:

从:

function();

自:

int min_val;
int max_val;
function(min_val, max_val);