将值从一个函数传递到另一个C ++

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将值从一个函数传递到另一个C ++相关的知识,希望对你有一定的参考价值。

大家好。我有一个任务来创建两个函数:其中一个是用随机值“填充”数组,然后将第二个函数设置为int,第二个函数我必须使用相同的数组,选择一行并找到该行的min元素。但是问题是我不知道如何将值从一个函数传递给另一个函数。这是我的代码。请注意,我是编程的超级入门者,因此,如果您以一种可以理解的方式进行解释,我将非常高兴。

#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;

void fillarray(int arr[5][5], int rows, int cols) {
    cout << "Static Array elements = \n\n" << flush;

    for(int i = 0; i < rows; ++i) {
        cout << "Row " << i << "  ";
        for(int j = 0; j < cols; ++j) {
            arr[i][j] = rand() % 10;
            cout << arr[i][j] << " " << flush;
        }
        cout << endl;
    }
    cout << " \n\n";
}

void minarray(int a, void fillarray) { // don't know what to write here

there:
    int min = INT_MAX; // Value of INT_MAX is 2147483648.

    if(a > 4) {
        cout << "Invalid input! " << endl;
        goto there;
    }

    for(int counter = 0; counter < 5; ++counter) {
        if(arr[a][counter] < min) min = arr[a][counter];
    }
    cout << "Minimum element is " << min << endl;
}
int main() {
    int z;

    srand(time(NULL));
    const int rows = 5;
    const int cols = 5;
    int arr[rows][cols];
    fillarray(arr, rows, cols);
    cout << "Enter the number of row: ";
    cin >> z;
    minarray(z, fillarray) 
    system("PAUSE");
}

用dev c ++编写

答案
我不确定这是否可以编译,但是我猜您想将int arr [x] [y]从fill Array函数传递给minArray函数。为此,您首先需要将arr作为minArray的参数。从那里,您需要通过引用传递它。然后,您可以从fillArray调用minArray。
另一答案
您需要做的是调用fillarray来填充数组。所以看起来像

fillarray(arr, rows, cols);

就像您到目前为止一样。现在,您已经全部填写了数组arr。minarray不在乎这是怎么发生的。因此,请不要通过您的填充方法。将其传递给数组。

minarray(cols, arr[z]);

您不需要传递整个数组-只需传递相关行。您还通过了宽度。

并更改minarray的定义:

void minarray(int length, int[] array)

现在,您的minarray本身需要更改。首先,摆脱if-check。您现在不需要传递行号,但是您确实需要传递作为长度的列数。

然后您的for循环如下:

for (int index = 0; index < length; ++index) { if (array[index] < min) { min = array[index]; } }

所以,总结一下:

  • Main声明数据并调用您的两个方法。
  • fillarray填充数组。从头开始以现有方式调用它。
  • minarray在一行上打印最小值。也从main调用它,传入数组,而不是填充它的方法。

但是,您还有一个问题。 fillarray将数组大小硬编码为5x5,但是main使用定义的常量。我会将那些内容移到文件的顶部,并在两个地方都使用它们。

移到顶部,在任何#includes下面:

const int rows = 5; const int cols = 5;

定义fillarray:

void fillarray(int arr[rows][cols]) {

当您从main调用它时:

fillarray(arr);

另一答案
对于启动器,功能fillarray具有冗余参数cols,因为从第一个参数int arr[5][5]的声明中知道此数字。

可以这样声明函数

void fillarray(int arr[5][5], int rows )

如果未在函数中填充整个数组,则可以提供参数cols

您已经通过此调用填充了数组

fillarray ( arr, rows, cols );

该功能已执行其任务。因此,您在尝试时无需再次引用该函数

minarray(z, fillarray)

函数minarray可以这样声明:

void minarray( const int arr[], size_t n );

并称为

minarray( arr[z], cols );

初步检查z小于5。

或者可以这样声明

void minarray( const int arr[][5], size_t n, size_t row );

并称为

minarray( arr, rows, z );

请注意,有一种标准算法std::min_element允许在数组中查找最小元素。要用值填充数组,可以使用标准算法std::generate

以上是关于将值从一个函数传递到另一个C ++的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从一个JFrame传递到另一个JFrame?

如何通过 Dart 中的 onTap 函数将值传递到另一个屏幕?

将指针从一个函数传递到另一个函数

在角度js中将值从一个控件传递到另一个控件[重复]

使用列表将值从一个类传输到另一个类

将局部变量从一个函数传递到另一个函数