如何将本地数组传递给另一个函数调用?

How to pass a local array to another function call?

我正在从事一个项目,该项目要求某些操作在它们自己的功能中。现在,我必须获取生成的随机值,并将它们从数组中输出。我将值存储在 numarray 中,但我不知道如何在函数中调用该数组来输出值。我设置了一个函数,它似乎会获取数组并将其输出,但我不知道如何在没有参数的情况下调用该函数以在 main 中传递它。这是输出数组的可能方式,还是应该采用完全不同的方式。

PS:我知道命名空间不好,但这是我必须做的才能通过 class。

#include <iostream> 
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>


using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read();
void printArray(int *numarray);


void randomgenerator() {
    srand(time(0));
    randomData.open("randomData.txt");
    for (int counter = 0; counter < 100; counter++) {
        randomData << rand() % 100+1 << endl;
    }
    randomData.close();
    
}


void read() {
    inputrandomData.open("randomData.txt");
    int numarray[100] = {};
    for (int i = 0; i < 100; i++) {
        inputrandomData >> numarray[i];
    
    }
    inputrandomData.close();

}



void printArray(int *numarray) {
    
    for (int index = 0; index < 100; index++) {
        cout << numarray[index];
    }

}


int main() {

    randomgenerator();
    read();
    printArray();

    return 0;
}

randomgenerator 函数生成值并将它们存储在文件中。 read 函数获取这些值并将它们存储在数组中。 printarray 是我要输出数组值的函数,它给我带来了问题。

您需要从读取动态分配 return numarray。或者甚至更好地创建 numarray,就像您在堆栈上所做的那样,但在 main 中执行并将其作为参数传递给 read,然后作为参数传递给 printArray。

当读取完成时,numarray 将超出范围,因为您将它分配到堆栈上。

解决方案(根据您的代码):在 main 中声明局部数组变量。传递指向函数的指针以及数组大小,因为它需要在传递的函数内处理数组。这种设计不可取。

你可以设计class因为涉及到一些数据成员,你可以在上面调用那个class的方法。

您可以更喜欢 std::vector 作为数据成员来保存数据,保留大小符合您的要求。因为 std::vector 的保留方法避免了随着向量大小的增长而重新分配。在这里,您的尺寸为 100。因此您可以保留 std::vector 的 100 件商品。