函数如何使用引用返回所需的数字?
How can a function return the required numbers using the reference?
我做了一个函数,用户需要输入数组大小,数组值,它将返回该数组中最大和最小的数字。
我的问题是如何通过引用返回这两个值?
这是我的代码:
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_element
和std::min_element
。稍后,如果您想返回更复杂的内容,而不仅仅是一对两个整数,您应该定义自己的struct
或class
并编写一个返回自定义类型的函数/方法。
另请注意,应将负责计算的逻辑和负责用户输入/输出的逻辑分开。我只给了你负责计算的函数,你可以给自己写一个负责要求用户输入的函数。
要通过引用返回结果,您必须
1( 更改函数的定义以返回引用(与号&
(
从:
void function()
{
// ...
}
自:
void function(int& min_value, int& max_value)
{
// ...
}
2(在函数内部,您必须为通过引用返回的变量赋值(min_value
和max_value
(
3(调用函数时,必须提供变量来"容纳"结果:
从:
function();
自:
int min_val;
int max_val;
function(min_val, max_val);
相关文章:
- 函数如何使用引用返回所需的数字?
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- C++ python 中的函数返回数字而不是字符串
- 使用非托管导出将字符串从 C# 返回到C++将返回数字
- 我的代码应该接受一个数字,并返回字母等级或"Grade is not valid"但 else 语句不起作用
- 如何返回一串字母数字字符中的最大值(例如-1A003B3)?
- 将 MPFR 数字转换为字符串并返回
- C++ 递归:返回数字的最小偶数
- typeid.name 返回派生类类型之前的数字
- Fibbonaci 递归代码返回错误值,始终返回下一个数字
- 为什么我的阶乘数查找器返回以C++输入的数字?(已编辑)
- 尝试编写函数尝试从字符串中提取数字,但它返回不相关的数字
- 随机函数在循环中调用时返回相同的数字!C++
- 将字符转换为ASCII返回数字太大
- 为什么此范围基于语句返回一个数字太低的范围
- 根据另一个数字的可整除性返回子数组中的索引
- 如果数组中有重复的数字,如何返回'false'?
- 递归计算满足条件的值数并返回该数字
- C++余数以较高的数字返回 7