Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数如何使用引用返回所需的数字?_C++_Arrays_Reference - Fatal编程技术网

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

C++ 函数如何使用引用返回所需的数字?,c++,arrays,reference,C++,Arrays,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) {

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

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

这是我的密码:

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;
}
void函数()
{
inti,n;
int-arr[10];
cout>n;

cout如果希望函数返回一对数字,可以使用
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;
}
std::pair findMaxAndMin(int*array,int arraySize){
int max=std::numeric_limits::min();
int minimest=std::numeric_limits::max();
for(int i=0;i最大值){
最大=数组[i];
}
if(数组[i]<最小值){
最小=数组[i];
}
}
返回标准::生成_对(最大、最小);
}
int main(){
int testArray[10]={10,9,8,7,-69,100,-200,300,1,2};
自动结果=findMaxAndMin(testArray,10);

std::cout如果希望函数返回一对数字,可以使用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;
}
std::pair findMaxAndMin(int*array,int arraySize){
int max=std::numeric_limits::min();
int minimest=std::numeric_limits::max();
for(int i=0;i最大值){
最大=数组[i];
}
if(数组[i]<最小值){
最小=数组[i];
}
}
返回标准::生成_对(最大、最小);
}
int main(){
int testArray[10]={10,9,8,7,-69,100,-200,300,1,2};
自动结果=findMaxAndMin(testArray,10);

St::Cuth

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::向量a1{{{1,2,3};
const auto result=std::minmax_元素(a1.begin(),a1.end());
auto ForwardIterator Tominimum=结果。第一;
auto ForwardIterator最大值=result.second;

在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::向量a1{{{1,2,3};
const auto result=std::minmax_元素(a1.begin(),a1.end());
auto ForwardIterator Tominimum=结果。第一;
auto ForwardIterator最大值=result.second;

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

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

发件人:

致:

2) 在函数内部,您必须为引用返回的变量赋值(
min\u value
max\u value

3) 调用函数时,必须提供变量,这些变量将“容纳”结果:

发件人:

致:


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

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

发件人:

致:

2) 在函数内部,您必须为引用返回的变量赋值(
min\u value
max\u value

3) 调用函数时,必须提供变量,这些变量将“容纳”结果:

发件人:

致:


查看您的返回值……就像在main中一样,例如,您可以将函数声明为int函数(),并在结尾处写入返回arr[0];除了@retinotop外:函数可能有一个返回值。如何返回两个值(即min和max)?为此,可以使用复合类型,例如,
std::pair
。感谢这些信息让我头脑中的事情变得清晰起来,干杯主题:如果用户输入的数字大于10或根本不是数字,会发生什么?建议:养成一个好习惯,从一开始就检查用户输入的有效性…将最大值存储在单独的变量中,not in
arr[0]
:如果最小值位于那里,您将丢失它并找到第二个最小值。查看您的返回值……就像在main中一样,例如,您可以将函数声明为int函数()并在返回arr[0]的末尾写入;除@retinotop外:函数可能有一个返回值。如何返回两个值(即最小值和最大值)?为此,可以使用复合类型,例如,
std::pair
。感谢这些信息让我头脑中的事情变得清晰起来,干杯主题:如果用户输入的数字大于10或根本不是数字,会发生什么?建议:养成一个好习惯,从一开始就检查用户输入的有效性…将最大值存储在单独的变量中,not in
arr[0]
:如果最小值位于那里,您将丢失它并找到第二个最小值。
function();
int min_val;
int max_val;

function(min_val, max_val);